recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - Comment obtenir automatiquement le focus après avoir affiché une zone de texte dans AngularJS

<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>

Plusieurs de ces structures sont générées par ng-repeat. La zone de texte est masquée au début. Cliquez sur lc-hint pour faire apparaître la zone de texte.

La commande setfocus dans la documentation officielle ne semble pas fonctionner. Aide

大家讲道理大家讲道理2794 Il y a quelques jours633

répondre à tous(1)je répondrai

  • 大家讲道理

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

    Il y a un problème avec votre code :

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

    doit être écrit comme

    ng-click="toEdit($index)"

    Pourquoi ne pas utiliser le natif et ajouter l'identifiant de textarea à abc

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

    Si vous effectuez une saisie dans la console, il est préférable d'ajouter un délai. Le focus de la zone de texte ne peut être déclenché que lorsque la page actuelle est dans l'état focus. Cliquez n'importe où sur la page immédiatement après avoir tapé pour déclencher :

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

    Le setfocus que vous rencontrez ne prend pas effet, c'est peut-être parce que la page actuelle n'est pas focus.

    Mettez-le dans votre environnement de code, ajoutez une zone de texte avec l'identifiant, le préfixe que j'ai écrit est 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();
    }

    répondre
    0
  • Annulerrépondre