我已经编写了一个timepicker
指令,我可以在其中输入时间,如果我点击 Enter ,该值将以特定的时间格式格式化。输入也会模糊。一切正常。
问题是我在表单中还有一些带有ng-click
指令的按钮。如果我点击 Enter ,也会调用ng-click
指令的动作。虽然我运行e.preventDefault();
这是我的指令的代码:
$element.keyup(function(e) {
var keyCode = e.keyCode || e.witch;
if (keyCode == 13) {
$element.blur();
// Do some more stuff here
e.preventDefault();
return false;
}
});
HTML代码:
<button class="btn btn-default" ng-click="openModal()">
<i class="icon-info-sign"></i>
</button>
有趣的是,timepicker
指令按预期工作,并且将调用openModal()
函数。我该如何防止这种情况?
答案 0 :(得分:48)
您的按钮需要type="button"
。默认情况下,它是type="submit"
,这就是在表单提交时调用它的原因。
当您按Enter键时,您似乎还需要阻止表单提交,但这是一个不同的问题。