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

按enter键时AngularJS表单未提交

傅献
2023-03-14

我正在尝试在用户按回车键时提交登录表单。单击“登录”按钮时,表单运行良好,但按回车键不起作用,此外,还会导致奇怪的行为:

  • 未执行由ng submit关联的功能
  • 按enter键后,不再显示错误消息(登录失败)

以下是我的标记:

<form ng-submit="login()" class="login-form">
    <div class="alert alert-danger" ng-class="{ 'display-hide': !showError }">
        <button class="close" data-close="alert"></button>
            <span> Login failed </span>
    </div>
    <div class="form-group">
        <label class="control-label visible-ie8 visible-ie9">Username</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username" ng-model="username"/>
    </div>
    <div class="form-group">
        <label class="control-label visible-ie8 visible-ie9">Password</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" ng-model="password"/>
    </div>
    <div class="form-actions">
        <button class="btn btn-success uppercase">Login</button>
    </div>
</form>

注意,我尝试替换了<代码>

具有login()函数的相应控制器如下所示:

.controller('LoginCtrl', ['$rootScope', '$scope', ..., function LoginController ($rootScope, $scope, ...) {
    $scope.showError = false;

    $scope.login = function()
    {
        console.log("logging in");
        $http({
            url: $scope.apiEndpointLogin,
            method: 'POST',
            data: {'username': this.username, 'password': this.password}
        }).then(function(response) {
            $scope.showError = false;

            [...]
        }, function() {
            $scope.showError = true;
        });

    };
}]);

我运行angularv1.4.0并使用angular-用户界面-router v.0.2.15进行路由。

感谢您的任何意见,非常感谢。

共有2个答案

关浩壤
2023-03-14

使用代替Button

羊舌新荣
2023-03-14

放这个

 <input type="submit" class="btn btn-success uppercase" value="Login" > 

而不是

 <button class="btn btn-success uppercase">Login</button>

对于表单提交,按钮应为提交类型。

编辑代码:

<form   class="login-form"  ng-submit="login()" >
    <div class="alert alert-danger" ng-class="{ 'display-hide': !showError }">
        <button class="close" data-close="alert"></button>
            <span> Login failed </span>
    </div>
    <div class="form-group">
        <label class="control-label visible-ie8 visible-ie9">Username</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username" ng-model="username"/>
    </div>
    <div class="form-group">
        <label class="control-label visible-ie8 visible-ie9">Password</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" ng-model="password"/>
    </div>
    <div class="form-actions">
        <input  type="submit" class="btn btn-success uppercase"  >
    </div>

</form>

另外,请检查您的LoginCtrl是否位于表单DOM上方。

编辑代码

请检查一下这个Plunker

 类似资料:
  • 在这种特殊情况下,当我按Enter键时,我必须使用哪些选项使这些输入调用函数? Html:

  • 问题内容: 在这种特殊情况下,按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时,按钮的动作被触发,这确实很烦

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

  • 我有一个带有两个div标签的登录控件的表单 第一个DIV包含用户名、密码和登录按钮,而且我忘记了表单中的密码链接。。当我们点击它时,它会显示另一个带有输入电子邮件id文本框和提交按钮的div。 我使用JQuery的回车键来提交表单,它工作得很好...但在忘记密码链接的情况下,单击它会显示另一个div...与提交按钮,但回车键不适用于按键上的div 这是我的jQuery代码: 如何提交表单输入键按两