从外部控制器按钮提交表单以进行验证

时间:2013-06-20 09:53:56

标签: javascript angularjs angularjs-controller

如果你看看我的fiddle

我不确定为什么内部的“提交”按钮会触发浏览器验证(根据required属性),但“外部按钮”不会?

外部按钮调用submit()形式的函数,所以我期望相同的行为,不是吗?

我知道这可能不是一个Angular问题,但我正在寻找一个Angular解决方案,这意味着我不必使用$ element(因为我知道这是不好的做法)。

2 个答案:

答案 0 :(得分:1)

内部提交按钮会触发所需的行为,因为它是浏览器的默认行为。您无法通过使用javascript提交表单来触发required行为。您必须找到一些其他方式向用户显示他们应该对表单执行的操作。您可能希望使用$valid附带的ngForm属性。

答案 1 :(得分:0)

当你使用$ element时,你会在纯javascript中触发事件,而angular不知道发生了什么,所以在这种情况下它不能验证表单。您应首先触发表单验证:

$scope.$broadcast('$validate');
if(!ngForm.$invalid)
   $element.find("form")[0].submit();

为此,请使用ng-form标签定义表单,如下所示:

<ng-form> /* BLABLABLA */ </ng-form>

更多信息:

http://docs.angularjs.org/api/ng.directive:ngForm

您也可以查看:

AngularJS - How to trigger submit in a nested form