我需要表单上onsubmit
属性的功能 - 即当我调用此onsubmit
函数时,它必须返回truthy才能使表单发布。但是我想通过角度函数调用来执行此操作,如下所示:
<form id="form-submit-canvas" autocomplete="on" enctype="multipart/form-data" accept-charset="UTF-8" method="POST" onsubmit="{{FormSubmit.validate()}}" action="{{FormSubmit.SUBMIT_URL}}" novalidate>
但是,上面列出了onsubmit
上使用插值的错误。我尝试输入ng-submit
但由于我设置的action
属性被覆盖,因此无效。
答案 0 :(得分:6)
不确定它是否对您有效,但我正在解决类似的问题。
以下回答让我走上了正确的轨道:https://stackoverflow.com/a/17769240/1581069
所以,总结一下所需的步骤:
你应该在你的onsubmit
中调用纯javascript(无角度的),比如(请注意:如果你返回false,那么=&gt;表单不会被提交):
<form id="form-submit-canvas" ... name="fooForm" onsubmit="return externalValidate();" ...
并实现将方法移交给angular,如:
function externalValidate(){
return angular.element($("#form-submit-canvas")).scope().validate();
}
validate()
方法应该只是您之前提到的方法(在角度控制器中实现)。 externalValidate()
应在任何角度特定组件之外实现。此外,请务必确保从validate()
方法返回正确的结果(以防止表单提交)。也许是这样的:
$scope.validate = function () {
// TODO implement whatever magic you need prior to submission
return $scope.fooForm.$valid;
}
答案 1 :(得分:2)
尝试使用ng-submit
属性而不是onsubmit
。相关建议:Angular不支持许多属性。您应该找到要用于使Angular正确响应的属性的ng-
等效项。
示例:
<form id="form-submit-canvas" autocomplete="on" enctype="multipart/form-data" accept-charset="UTF-8" method="POST" ng-submit="validate()" novalidate>
...
<input type="submit" name="submit" value="Submit" />
</form>
validate()
中的ng-submit
方法是$scope
上声明的方法。
以下是相关教程:AngularJS Tutorial (ng-submit
)