Angularjs -按下下一个输入
Angularjs - next input on keypress
我一直在尝试实现一个指令,每次用户点击键盘。
我有四个不同的输入,每个输入接收一个字符,用户应该填写下一个表单
我写了一个指令,但它不工作
这是我的代码:
JS:
var app = angular.module('app', []);
app.directive('focus', function() {
return {
restrict: 'A',
link: function($scope,elem,attrs) {
elem.bind('keydown', function(e) {
elem.next().focus();
});
}
}
})
HTML: <div ng-app="app">
<form>
<input focus type="text" />
<input focus type="text" />
<input focus type="text" />
</form>
</div>
Jsfiddle: http://jsfiddle.net/Y2XLA/109/
非常类似的问题:angularjs在输入
时将焦点移到下一个控件可能是一些简单的东西,但我没有得到正确的
非常感谢!
解决方案很简单,只需在.next()
后面添加一个[0]
:
elem.bind('keydown', function (e) {
elem.next()[0].focus();
});
但是您可能想使用keyup
而不是keydown
,因此您在切换到下一个输入字段之前将值输入到旧的输入字段。更新小提琴:http://jsfiddle.net/Y2XLA/110/
您还应该为elem.next()
不是输入字段的情况添加一些处理
创建定制指令:
.directive('nextOnKeypress', function () {
return {
restrict: 'A',
link: function ($scope, selem, attrs) {
selem.bind('keypress', function (e) {
e.preventDefault();
var pageElems = document.querySelectorAll('input, select, textarea'),
elem = e.srcElement
focusNext = false,
len = pageElems.length;
for (var i = 0; i < len; i++) {
var pe = pageElems[i];
if (focusNext) {
if (pe.style.display !== 'none') {
pe.focus();
break;
}
} else if (pe === e.srcElement) {
focusNext = true;
}
}
});
}
}
})
相关文章:
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- Chrome(Android)键盘将单词转移到js焦点更改的下一个输入
- 使用JQuery将焦点更改为粘贴事件后的下一个输入
- 使用angularjs将焦点更改为下一个输入文本
- 在动态创建的输入上使用向下箭头键将光标移动到下一个输入
- 如何强制输入表单中的活动下一个输入字段
- 使用条形码扫描仪将焦点从一个输入更改为下一个输入
- 无法跳过带有 tabindex=“-1” 的下一个输入字段
- jQuery 在
中获取下一个输入元素值 - 如何使用回车键来关注下一个输入
- 我在html中有两个输入字段,我在想如何将第一个输入字段的值自动转换为下一个输入字段
- 使用回车键事件移动到下一个输入
- 如何将下一个输入字段集中在按键上
- Javascript/jQuery转到下一个输入/选择更改选择值
- 为什么不模拟tab键将焦点移到下一个输入字段?
- Vue JS将下一个输入集中在回车上
- 如何设置没有类或ID的下一个输入字段
- Jquery关注多种类型的下一个输入
- Jquery找到下一个输入,选择按下键,但不是按钮