angulaire.js - Comment obtenir automatiquement le focus après avoir affiché une zone de texte dans AngularJS
大家讲道理
大家讲道理 2017-05-15 17:06:42
0
1
631
<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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(1)
大家讲道理

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();
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal