javascript - 用于文本输入的 AngularJS 指令 : focus on next input on Enter

标签 javascript angularjs

我想为 AngularJS 实现这样的指令:如果在输入 [文本] 中使用,在点击输入时焦点将移动到下一个输入。实现这一目标的最佳方法是什么?

我有一个非常大的表单,想实现一种快速遍历字段的方法。

最佳答案

检查这个 FIDDLE

AngularJS 中有 ngKeypress 指令,您可以在 here 中阅读更多内容.

如果您的表单如您所述是静态的,那么完成您需要的最简单方法是传递下一个输入的 ID(或在我的示例中为索引)。如何提供 ID 由您决定,您可以传递整个 ID 或索引。

<input type="text" ng-model="field1" id="f_1"
       ng-keypress="keypressHandler($event, 2)"/>
<br/>
<input type="text" ng-model="field2" id="f_2" 
       ng-keypress="keypressHandler($event, 3)"/>
<br/>

然后在你的 Controller 中,如果 key 是 enter,通过给定的 id 获取元素,然后聚焦它。

$scope.keypressHandler = function(event, nextIdx){
    if(event.keyCode == 13){
        angular.element(
            document.querySelector('#f_'+nextIdx))[0].focus();

    }
}

如您所见,您可以像这样使用 ng-repeat,方法是传递 $index 而不是硬编码数字并动态创建 id。

关于javascript - 用于文本输入的 AngularJS 指令 : focus on next input on Enter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254825/

相关文章:

javascript - 自定义函数的属性在哪里?

javascript - 在jquery中防止事件从父元素到子元素

javascript - 如何解决需要适当加载器的 npm 错误?

angularjs - Angular.JS 触发两个异步服务调用,然后在两者都完成后执行操作

javascript - 如何使用 Node/Angular/JavaScript 将多个图像上传到亚马逊 AWS S3 存储桶

javascript - 在另一个图像上添加图像作为按钮

javascript - 如果我在我的 MVC 4 应用程序中删除了 "jquery.unobtrusive-ajax.min.js"那么会发生什么?

javascript - 单击 md-autocomplete (Angular Material) 的 "X"时调用函数

javascript - 日期时间在 angular.js 中不起作用

java - Servlet 返回 "到 AngularJS2 调用