Rumah  >  Soal Jawab  >  teks badan

angular.js - angularjs 显示textarea后如何自动获取焦点

<p ng-repeat="x in inputContent track by $index">
    <p ng-if="x.hint" ng-click="toEdit({{$index}})" class="lc-hint">{{x.placeholder}}</p>
    <textarea ng-if="!x.readable" ng-model="x.value"></textarea>
</p>

由ng-repeat生成了多个这样的结构,textarea一开始隐藏,点击lc-hint,使textarea出现,如何自动获取焦点。

官方文档里的setfocus指令好像不行。求助

大家讲道理大家讲道理2738 hari yang lalu592

membalas semua(1)saya akan balas

  • 大家讲道理

    大家讲道理2017-05-15 17:08:42

    Ada masalah dengan kod anda:

    ng-click="toEdit({{$index}})"

    hendaklah ditulis sebagai

    ng-click="toEdit($index)"

    Kenapa tidak gunakan yang asli dan tambahkan id textarea ke abc;

    document.getElementById("abc").focus();

    Jika anda memasukkan dalam konsol, sebaiknya tambahkan kelewatan. Fokus textarea hanya boleh dicetuskan apabila halaman semasa berada dalam keadaan fokus. Klik mana-mana sahaja pada halaman selepas menaip untuk mencetuskan:

    setTimeout(function(){document.getElementById("abc").focus();},1000);

    Fokus set yang anda hadapi tidak berkuat kuasa, mungkin kerana halaman semasa tidak berada dalam fokus.

    Letakkannya ke dalam persekitaran kod anda, tambah textarea dengan id, awalan yang saya tulis ialah suibianla_{whatever}:

    <textarea id="suibianla_{{ $index }}" ng-if="!x.readable" ng-model="x.value"></textarea>
    $scope.toEdit = function(index){
        //你的业务代码
        inputContent[index].readable = true;    //我猜你是这样写的,在这里后边加一句
        document.getElementById("suibianla_" + index).focus();
    }

    balas
    0
  • Batalbalas