我目前可以将光标自动聚焦到按预期方式工作的特定字段(显示模态时)。问题是,当我单击相同格式的另一个字段并开始键入时,光标会跳回到具有autofocus属性的初始字段。知道是什么原因造成的吗?预先感谢
这是针对1.7角度项目的。我尝试将自动对焦功能移至控制器内的其他位置,但没有一个起作用。
//控制器
angular.module('qmsControllers').controller('ResponseCodesModalCtrl', function($scope) {
$scope.giveFocus = function() {
$(**'#responsecode'**).focus();
return true;
};
});
//视图
<div class="form-group modal-form-group">
<label for="code" class="col-sm-2 control-label">Response Code:</label>
<input type="text" class="some class="0 === editMode"
ng-change="onResponseCodeChanged($event)"
**id="responsecode"**
**ng-show="giveFocus()"**
name="code" ng-model="response" />
</div>
预期结果是在显示模态时发生自动对焦,但允许在自动对焦字段以外的其他字段中键入
。答案 0 :(得分:0)
ng-show并不意味着您可能会认为它是什么意思,ng-show控制是否应显示元素,而不是“在显示时执行此功能” 因此,每次angular评估是否需要显示输入元素时,您的元素都会触发onFocus。
如果只想在加载对话框时触发焦点,则只需调用 $ scope.giveFocus()在控制器功能的末尾。并删除ng-show属性
您还可以使用$ onInit方法,一旦视图初始化,angularjs就会调用此方法,这可能是因为该元素还不在dom中。 所以像
this.$onInit = function() {
$(**'#responsecode'**).focus();
};