Ich habe eine iOS App mit angularJS und ionic. Ich versuche, den Tastaturfokus auf das nächste Eingabefeld zu bringen, wenn der 'Return'-Knopf gedrückt wird. Hier ist der HTML-Code, in dem die ng-repeat existiert:Wie setze ich den Fokus auf das nächste Eingabefeld, das durch ng-repeat erzeugt wird?
<div class="row item-list" ng-repeat="item in shoppingList">
<div class="col col-10 col-check" ng-click="checkItem($index)">
<i class="icon ion-checkmark-round" ng-if="item.Action == 'check'"></i>
</div>
<div class="col col-memo" ng-click="updateMemo($index)">
<label class="item-list item-input">
<input id="inputText" type="text" placeholder="" ng-model="item.EventContent" on-return="nextLine($index)"/>
</label>
</div>
</div>
Sie in meinem Eingangselement sehen kann ich "on-return =" nextline ($ index) "". Es bin ich mit meiner benutzerdefinierten Richtlinie, die verwendet wird, wenn die Return-Taste getroffen wird:
.directive('onReturn', function() {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if (event.which === 13) {
scope.$apply(function() {
scope.$eval(attrs.onReturn);
});
event.preventDefault();
}
});
};
});
Welche meine Funktion in nextline meinen Controller rufe:
myScope.nextLine = function (index) {
//get next html input element and .setFocus()
}
Wo Index den aktuellen Eingabefeld Index ist. Ich brauche einen Weg, um das nächste HTML-Eingabeelement zu erhalten und den Fokus dort zu setzen. Jede Hilfe wird geschätzt.
nicht 'Umfang Verwenden Sie $ apply' direkt, sondern wickeln in' $ timeout() '- es hat eine "intelligente" Nutzung von' $ gelten '- kein" brutaler ". – DotBot