javascript - angularJS 绑定(bind)到输入的回车键,如果输入是按钮则提交

标签 javascript angularjs

我有这样的指令,去模态窗口中的下一个输入(或按钮):

.directive('autoVrm', function () {
    return function (scope, element, attrs) {
                var counter = 0;
            element.bind("keydown keypress", function (event) {
                console.log(element);           
                if(event.which === 13) {
                        counter++;
                    event.preventDefault();
                    var elementToFocus = element.find('input')[counter] || element.find('button')[1];
                    console.log(elementToFocus.type);
                    if(angular.isDefined(elementToFocus))
                        elementToFocus.focus();
                    if (elementToFocus.type === 'button'){
                        counter = -1;
                        elementToFocus.bind("keydown keypress", function (eventSubmit) {
                            if(eventSubmit.which === 13) {
                                console.log('submit');
                            }
                        });
                    }
                }
            });
        };

但我有一个麻烦,如果我在按钮上,然后单击输入我得到:

未捕获的类型错误:undefined 不是函数

但是为什么?如何让输入点击提交表单?不依赖于 Controller ?

最佳答案

为未捕获的类型错误尝试 angular.element(elementToFocus).bind。

关于您的新评论:

如果这是在你的 Controller 中定义的

$scope.registerUser = function() {
    ...
}

然后在指令中简单地调用它

elementToFocus.bind("keydown keypress", function (eventSubmit) {
    if(eventSubmit.which === 13) {
        scope.registerUser();
    }
});

作为一种猜测,您可以做一些事情,例如检查 attrs 参数以获取“data-ng-click”的值并调用适当的函数:

elementToFocus.bind("keydown keypress", function (eventSubmit) {
    if(eventSubmit.which === 13) {
        if (attrs.dataNgClick == "registerUser()" {
            scope.registerUser();
        }
        else if (attrs.dataNgClick == "sign()" {
            scope.sign();
        }
        else if (attrs.dataNgClick == "frgtPassword()" {
            scope.frgtPassword();
        }
    }
});

关于javascript - angularJS 绑定(bind)到输入的回车键,如果输入是按钮则提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28106592/

相关文章:

javascript - AngularJS 从服务返回后引用关联数组或对象

Javascript 页面重新路由

javascript - 如何在渲染前在窗口调整大小事件中修改CSS?

javascript - csv-parse 抛出无效的开场白 : a quote is found inside a field at line

javascript - 如何显示数据库中的分割日期

javascript - 使用 Angular.js 处理基于 OAuth token 的身份验证?

javascript - 突出显示新事件的选项卡

javascript - 使用正则表达式和 javascript 获取字符串中的精确匹配

javascript - 如何使用 Jasmine 的 toEqual(jasmine.objectContaining) 方法来比较数组?

javascript - 在angularjs中声明多个服务依赖