我知道这个问题有很多线索但我的解释原因有点不同。
背景 我使用角度JS来提交表单。我的GSP中有一个如下所示的常规标签
<form action="formAction" class="form-horizontal" id="UserForm" name="UserForm"
useToken="true" ng-app="angularApp" ng-controller="angularController" novalidate="" ng-submit="onSubmitClick();">
<input type="button" name="next" value="submit"
id="submit" />
(实际上是Groovy中的提交标签,但StackOverflow不允许我写这个)
这是一个指定了Action和ng-submit的表单标记。
我想要实现的目标:
单击提交按钮时,将调用“onSubmitButtonClick()”函数,如果表单无效,则需要阻止提交。
onSubmitButtonClick在angular Controller中定义。现在问题是Angular JS只要找到定义的“action”URL就会提交表单。我无法删除该URL的值,因为它在运行时来自服务器端。所以我开始使用event.preventDefault()。
event.preventDefault在Firefox中不起作用所以我开始在函数调用 onSubmitButtonClick(事件)中传递事件,我意识到对于Firefox来说这是未定义的。
那么,有没有办法在firefox中访问事件?我不能使用'return false'或event.returnValue = false,因为Angular会忽略它们。所以,我需要让event.preventDefault工作。
以下是onSubmitButtonClick代码的样子:
$ scope.onSubmitButtonClick =函数(EVT){ 如果($ scope.UserForm。$无效) {
var browserObj=browserDetectFunction(); if(browserObj.browser=='Firefox') { evt.preventDefault(); // this throws evt undefined error in Firefox } else { event.preventDefault(); } } }
感谢任何帮助。感谢
答案 0 :(得分:0)
不完全回答你的问题,但采取不同的路线应该有效(查看你的代码):
<input type="button" name="next" value="submit"
id="submit" ng-disabled="UserForm.$invalid" />
如果无效,则删除提交按钮,并将其替换为无效按钮:
<input type="button" name="next" value="submit"
id="submit" ng-if="UserForm.$valid" />
<button type="button" name="next" value="submit"
ng-if="UserForm.$invalid" />