当前位置: 首页 > 知识库问答 >
问题:

用AngularJS按Enter键提交表单

满勇军
2023-03-14

在这种特殊情况下,当我按Enter键时,我必须使用哪些选项使这些输入调用函数

Html:

<form>
    <input type="text" ng-model="name" <!-- Press ENTER and call myFunc --> />
    <br />
    <input type="text" ng-model="email" <!-- Press ENTER and call myFunc --> />
</form>
// Controller //
.controller('mycontroller', ['$scope',function($scope) {
    $scope.name = '';
    $scope.email = '';
    // Function to be called when pressing ENTER
    $scope.myFunc = function() {
       alert('Submitted');
    };
}])

共有3个答案

车峻熙
2023-03-14

如果只有一个输入,则可以使用表单标记。

<form ng-submit="myFunc()" ...>

如果您有多个输入,或不想使用表单标记,或想将enter键功能附加到特定字段,则可以将其内联到特定输入,如下所示:

<input ng-keyup="$event.keyCode == 13 && myFunc()" ...>
仉运乾
2023-03-14

如果您想在没有表单的情况下调用函数,可以使用我的ngEnter指令:

Javascript:

angular.module('yourModuleName').directive('ngEnter', function() {
        return function(scope, element, attrs) {
            element.bind("keydown keypress", function(event) {
                if(event.which === 13) {
                    scope.$apply(function(){
                        scope.$eval(attrs.ngEnter, {'event': event});
                    });

                    event.preventDefault();
                }
            });
        };
    });

HTML:

<div ng-app="" ng-controller="MainCtrl">
    <input type="text" ng-enter="doSomething()">    
</div>

我在我的推特和gist账户上提交了其他令人敬畏的指令。

西门庆
2023-03-14

Angular支持开箱即用。你试过在表单元素上提交吗?

<form ng-submit="myFunc()" ng-controller="mycontroller">
   <input type="text" ng-model="name" />
    <br />
    <input type="text" ng-model="email" />
</form>

编辑:根据有关“提交”按钮的评论,请参阅按enter键提交表单,但不使用“提交”按钮,该按钮提供以下解决方案:

<input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;"/>

如果您不喜欢隐藏的提交按钮解决方案,则需要将控制器函数绑定到Enter keypress或keyup事件。这通常需要一个自定义指令,但AngularUI库已经设置了一个很好的按键解决方案。看见http://angular-ui.github.com/

添加angularUI库后,您的代码如下所示:

<form ui-keypress="{13:'myFunc($event)'}">
  ... input fields ...
</form>

或者可以将enter键绑定到每个单独的字段。

此外,请参阅创建简单keypres指令的SO问题:如何在AngularJS中检测onKeyUp?

编辑(2014-08-28):在编写此答案时,ng keypress/ng keyup/ng keydown在AngularJS中不作为本机指令存在。在下面的评论中,@darlan alves有一个很好的解决方案:

<代码>

 类似资料:
  • 我正在尝试在用户按回车键时提交登录表单。单击“登录”按钮时,表单运行良好,但按回车键不起作用,此外,还会导致奇怪的行为: 未执行由ng submit关联的功能 按enter键后,不再显示错误消息(登录失败) 以下是我的标记: 注意,我尝试替换了<代码> 具有login()函数的相应控制器如下所示: 我运行angularv1.4.0并使用angular-用户界面-router v.0.2.15进行路

  • 问题内容: 在这种特殊情况下,按Enter键时必须使这些输入调用函数的选项是什么? 问题答案: Angular开箱即用。您是否在表单元素上尝试了ngSubmit? 编辑:根据有关提交按钮的注释,该解决方案包括: 如果您不喜欢隐藏的提交按钮解决方案,则需要将控制器功能绑定到Enter keypress或keyup事件。这通常需要一个自定义指令,但是AngularUI库已经设置了一个不错的按键解决方案

  • 问题内容: 好吧,我试图通过按Enter提交表单,但不显示提交按钮。我不希望尽可能地使用JavaScript,因为我希望所有功能都可以在所有浏览器上正常工作(我知道的唯一JS方式就是使用事件)。 现在,表单如下所示: 哪个效果很好。当用户按下Enter键时,提交按钮将起作用,并且该按钮在Firefox,IE,Safari,Opera和Chrome中不显示。但是,我仍然不喜欢该解决方案,因为很难知道

  • 问题内容: PrimeFaces在按Enter键时禁用提交。 我正在运行在WildFly 8.2 Final上运行的PrimeFaces 5.1。 我有对话框,有两个inputNumbers和两个按钮。并且第一个inputNumber对ajax模糊事件进行一些计算。按钮旁边是在bean中进行一些计算的按钮。问题是,当用户在焦点位于inputNumber时按Enter时,按钮的动作被触发,这确实很烦

  • 用AngularJS按回车键提交表单这个问题使用html5按钮,但我使用角度材质按钮作为 但是如何使用它呢

  • 问题内容: 我只是写了这个漂亮的小函数,它可以在表单本身上工作… 按照我的逻辑,我想在输入textarea期间接受回车。同样,将输入字段的回车键行为替换为跳到下一个输入字段的行为(就像按下Tab键一样)将是额外的好处。有谁知道使用事件传播模型正确触发适当元素上的回车键,但阻止表单在其按下时提交的方法吗? 问题答案: 这是我功能的修改版本。它执行以下操作: 防止Enter键在除textarea,bu