Javascript 关注AngularJs中html表单中的第一个空输入
我正试图使用angularjs指令来集中html表单中的第一个空输入。以下是我到目前为止编写的指令代码(并应用于表单元素): 我正在迭代所有表单元素,并试图聚焦第一个空字段。然而,当我调用focus()时,元素不会聚焦。原因可能是什么 更新: 奇怪,但是如果我删除调试器语句(或者根本不打开inspector模式)并且不暂停javascript代码,它将关注第一个空元素。。。。(我正在使用谷歌浏览器)Javascript 关注AngularJs中html表单中的第一个空输入,javascript,angularjs,focus,angularjs-directive,directive,Javascript,Angularjs,Focus,Angularjs Directive,Directive,我正试图使用angularjs指令来集中html表单中的第一个空输入。以下是我到目前为止编写的指令代码(并应用于表单元素): 我正在迭代所有表单元素,并试图聚焦第一个空字段。然而,当我调用focus()时,元素不会聚焦。原因可能是什么 更新: 奇怪,但是如果我删除调试器语句(或者根本不打开inspector模式)并且不暂停javascript代码,它将关注第一个空元素。。。。(我正在使用谷歌浏览器) Plunker:我做了一个测试,似乎是$timeout中的0值。将其更改为300或类似的值。有了
Plunker:我做了一个测试,似乎是$timeout中的0值。将其更改为300或类似的值。有了300个工作,您就可以打开或不打开开发人员工具
对我有用。你的超时时间放错地方了。您可以使用jquery进行一些提升。我不知道如何过滤空输入,所以使用了for循环(请有人对此进行改进) 将此指令添加到模块中,然后在要为其设置焦点的父元素上添加属性“focus first”
.directive('focusFirst', ['$timeout', function ($timeout) {
return {
restrict: "A",
link: function (scope, element, attrs) {
$timeout(function() {
var inputs = element.find('input'),
count = inputs.length;
for (var i = 0; i < count; i++) {
if (inputs[i].value) {
continue;
}
inputs[i].focus();
break;
}
}, 0);
}
};
}]);
指令('focusFirst',['$timeout',函数($timeout){
返回{
限制:“A”,
链接:函数(作用域、元素、属性){
$timeout(函数(){
var inputs=element.find('input'),
计数=输入。长度;
对于(变量i=0;i.directive('focusFirst', ['$timeout', function ($timeout) {
return {
restrict: "A",
link: function (scope, element, attrs) {
$timeout(function() {
var inputs = element.find('input'),
count = inputs.length;
for (var i = 0; i < count; i++) {
if (inputs[i].value) {
continue;
}
inputs[i].focus();
break;
}
}, 0);
}
};
}]);