ユーザーは質問に複数の回答を入力できるようにしたいので、ユーザーの追加に応じてテキスト入力が繰り返されますより多くの答え。ng-repeatでダイナミック入力を追加すると最後の要素がサファリのフォーカスを奪ってしまう
これはクロムでうまくいきますが、サファリでは、最後の要素が追加されるとすぐにフォーカスを盗み、いくつかの入力に渡って高速タイピングユーザーの回答を広げます。
iOS Safariでは、ブラウザがハングアップするため、さらに悪化します。
はここでここで私はjsfiddleを作成したコントローラ
function AssessmentController($scope, $log) {
$scope.answer = {};
$scope.answer.responses = [{id:0, value:""},{id:1, value:""}];
this.addAnswerIfNeeded = addAnswerIfNeeded;
// Add answer if the last two answers are non-empty
function addAnswerIfNeeded() {
var answers = $scope.answer.responses;
if ((answers[answers.length - 1].value != '') ||
(answers[answers.length - 2].value != '')) {
addAnswer();
}
}
// Adds a new answer if this is the last element
// isLast is needed to prevent non-lazy evaluation bugs
function addAnswer() {
$scope.answer.responses.push({
id:$scope.answer.responses.length, value: ""
});
};
}
だ形
<form class="form-horizontal sparse"
ng-controller="AssessmentController as assessment">
<fieldset>
<div class="form-group alt-uses-list" ng-repeat="response in answer.responses">
<label for="answer{{$index}}" class="col-xs-1 control-label">{{$index + 1}}.</label>
<div class="col-xs-10">
<input type="text" class="form-control"
id="response.uses{{$index}}"
autocomplete="off" tabIndex="{{$index + 1}}"
autofocus="{{$first}}" ng-model="response.value"
ng-change="assessment.addAnswerIfNeeded()">
</div>
</div>
</fieldset>
</form>
ためのコードです。
それをしました。助けてくれてありがとう。 – ChristopherJ