在Angular表单提交时触发按钮按下事件

4
我有一个表单,其中包含一个文本输入框和一个按钮。我想要捕获用户在文本输入框中按下回车键的动作-不是为了提交表单,而是为了触发另一个操作。该按钮有其自己独立的单击处理程序,但因某种原因,当我在文本字段中按回车键时它被触发。示例:http://jsfiddle.net/T8zLq/1/
<form onsubmit="return false" ng-submit="mysubmit()" ng-controller="TestCtrl" ng-app="Test">
    <input type="text" />
    <button ng-click="test()">X</button>
</form>

var app=angular.module("Test", []);

app.controller("TestCtrl", ["$scope", function($scope) {
    $scope.test = function() {alert('lol');  };
    $scope.mysubmit = function() {alert('submit');};
}]);

为什么会发生这种情况?

那么你想发生什么?当你按下回车键时,你想让test()不触发但是mysubmit()触发吗?还是你两个都不想触发? - Matt Welch
正确的做法是,test() 应该只在我按下按钮时触发,而不是在表单提交时触发。 - user3088880
1个回答

13

将按钮的type='button'属性设置为

<form ng-submit="mysubmit()" ng-controller="TestCtrl">
    <input type="text" />
    <button ng-click="test()" type='button'>X</button>
</form>

示例

更多


1
啊,没意识到默认按钮类型是“提交”。 - user3088880
2
@beku8 按钮的默认值是“提交”,因此每次按下回车键时,它都会提交表单。 - Jonathan de M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接