在angularjs中聚焦某个输入字段

简·派克

所以我有可变数量的输入字段,保存完之后,我想将焦点返回到它们的第一个。

HTML代码:

<td ng-repeat='col in list.cols'>
  <input class='colData' type='text' ng-model='newentry[$index]'  on-press-enter="addRow(newentry)">
</td>

正如您可能会读到的那样,在按Enter键时我将调用“ addRow()”,然后将值添加到我的数据模型中。这很好。

现在,在添加数据之后,我想将焦点设置到这些输入字段中的第一个。
我试图抵制依靠我的jQuery知识的冲动。如果我包括jQuery,我就可以做到$('input.colData').first().focus();

但是我真的在努力学习以“有角度的方式”做事。

我将如何处理这种情况?
有没有办法通过包含的模型选择输入字段?

谢谢,
J

更新:我不认为这是重复的,因为在我的情况下,我无法向输入字段添加指令,因为它们是由angular动态创建的,并且只应关注第一个。如上所述,它们的数量是可变的。除了jQuery单一代码外,我看不到如何识别其中的第一个。

皮特

用例

提交表单后,如何使用指令集中第一个元素?做出以下假设:

  • 通过Ajax通过$ resource或$ service提交表单
  • 需要IE 9支持
  • 需要“ Angular-Way”

有关演示,请参见此jsFiddle让我知道我是否正确理解了您的问题。

控制者

控制器将包含用于管理数据或将资源提交到服务器的代码。然后它将广播一个事件,表明已提交数据。由于原始帖子中未提供任何代码,因此我采取了填补空白的自由。

或者,$promise可以使用a触发事件,这将提供处理任何服务器问题的方法。

function ctrl($scope) {
    $scope.items = [ 'thing 1', 'thing 2', 'thing 3' ];
    $scope.data = [];

    $scope.addRow = function(newEntry) {
        var entry = newEntry || 'thing ' + $scope.items.length + 1;
        $scope.$evalAsync(function() {
            $scope.items.push(entry);
        });
    };

    $scope.submit = function() {
        console.log("Simulating a submit");
        $scope.$broadcast("formSubmitted");
    };
}

指示

指令将通过关注第一个元素来响应事件。后链接用于初始化事件并设置事件的侦听器。当事件被触发时,该元素将被聚焦。这样可以将数据和表示形式清楚地分开。

function onPressEnter() {
    return {
        restrict : 'A',
        scope: {
            onPressEnter: '&'
        },
        link: function($scope, $element, $attr, $ctrl) {
            $element.on('keyup', function(e) {
                if (e.which === 13) {
                    $scope.onPressEnter();
                }
            });

            $scope.$on("formSubmitted", function() {
                if ($scope.$parent.$first) {
                    $element[0].focus();
                }
            });
        }
    }
};

指令2

另外,您可以将此指令隔离为可重用组件,并使用以下命令。您要做的就是将on-submit-focus="0"任何内容添加到第一个子元素上。on-submit-focus="1"会选择第二个孩子,依此类推...这里有更新的演示

function onSubmitFocus() {
    return function($scope, $element, $attr) {
        $scope.$on('formSubmitted', function() {
            if ($scope.$index === +$attr.onSubmitFocus) {
                $element.children()[0].focus();
            }
        });
    };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在angularjs中聚焦特定的输入字段

来自分类Dev

无法聚焦 HTML 页面中的输入字段

来自分类Dev

AngularJS-聚焦时暂停输入字段的绑定

来自分类Dev

聚焦多个字段的angularjs

来自分类Dev

angularjs,在输入字段中输入不提交

来自分类Dev

聚焦后输入字段立即模糊

来自分类Dev

模糊后无法聚焦回输入字段

来自分类Dev

如何在角度引导ui的活动导航选项卡中聚焦第一输入字段?

来自分类Dev

如何遍历Google搜索结果页面中的输入字段并自动将其聚焦?

来自分类Dev

在 React 组件中聚焦输入字段 - 尝试创建引用时出现类型错误

来自分类Dev

在 Unity 3d 中单击“Tab”按钮时如何聚焦输入字段

来自分类Dev

如何清除AngularJS中的输入字段

来自分类Dev

AngularJS在输入字段中隐藏文本

来自分类Dev

如何清除AngularJS中的输入字段

来自分类Dev

无法在 TableRow 的 EditText 字段中聚焦/键入

来自分类Dev

检测输入元素是否在ReactJS中聚焦

来自分类Dev

自动聚焦列表项中的表单输入

来自分类Dev

AngularJS:在一个输入中,当没有聚焦时如何显示“ $ 50,000.00”,而在聚焦时如何显示“ 50000”?

来自分类Dev

填充输入字段angularJs

来自分类Dev

填充输入字段angularJs

来自分类Dev

如何在输入字段以外的元素上触发聚焦?

来自分类Dev

在聚焦文本输入字段时如何更改div的背景颜色?

来自分类Dev

自动聚焦下一个输入字段

来自分类Dev

聚焦输入字段时未弹出关键字

来自分类Dev

当下拉菜单(html,javascript)中的某个项目发生更改时,请填写输入字段

来自分类Dev

在angularjs中自动聚焦于ng-repeat

来自分类Dev

使用ng-repeat聚焦动态创建的输入-AngularJS

来自分类Dev

检查angularjs脚本中的输入字段是否为空

来自分类Dev

AngularJS-在URL输入字段中添加http前缀

Related 相关文章

  1. 1

    在angularjs中聚焦特定的输入字段

  2. 2

    无法聚焦 HTML 页面中的输入字段

  3. 3

    AngularJS-聚焦时暂停输入字段的绑定

  4. 4

    聚焦多个字段的angularjs

  5. 5

    angularjs,在输入字段中输入不提交

  6. 6

    聚焦后输入字段立即模糊

  7. 7

    模糊后无法聚焦回输入字段

  8. 8

    如何在角度引导ui的活动导航选项卡中聚焦第一输入字段?

  9. 9

    如何遍历Google搜索结果页面中的输入字段并自动将其聚焦?

  10. 10

    在 React 组件中聚焦输入字段 - 尝试创建引用时出现类型错误

  11. 11

    在 Unity 3d 中单击“Tab”按钮时如何聚焦输入字段

  12. 12

    如何清除AngularJS中的输入字段

  13. 13

    AngularJS在输入字段中隐藏文本

  14. 14

    如何清除AngularJS中的输入字段

  15. 15

    无法在 TableRow 的 EditText 字段中聚焦/键入

  16. 16

    检测输入元素是否在ReactJS中聚焦

  17. 17

    自动聚焦列表项中的表单输入

  18. 18

    AngularJS:在一个输入中,当没有聚焦时如何显示“ $ 50,000.00”,而在聚焦时如何显示“ 50000”?

  19. 19

    填充输入字段angularJs

  20. 20

    填充输入字段angularJs

  21. 21

    如何在输入字段以外的元素上触发聚焦?

  22. 22

    在聚焦文本输入字段时如何更改div的背景颜色?

  23. 23

    自动聚焦下一个输入字段

  24. 24

    聚焦输入字段时未弹出关键字

  25. 25

    当下拉菜单(html,javascript)中的某个项目发生更改时,请填写输入字段

  26. 26

    在angularjs中自动聚焦于ng-repeat

  27. 27

    使用ng-repeat聚焦动态创建的输入-AngularJS

  28. 28

    检查angularjs脚本中的输入字段是否为空

  29. 29

    AngularJS-在URL输入字段中添加http前缀

热门标签

归档