2013-06-20 50 views
1

如果你看一下我的fiddle来自外部控制器的按钮提交表单验证

我不知道为什么内部“提交”按钮会触发浏览器验证(按照required属性),但“外部按钮'不?

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

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

+0

内部提交按钮触发'required'行为,因为它的浏览器默认行为。您无法通过使用javascript提交表单来触发'required'行为。您必须找到其他方式向用户展示他们应该如何处理表单。您可能想使用'ngForm'附带的'$ valid'属性。 – Daiwei

+0

谢谢。如果您将此添加为答案,我会将其标记为正确。 –

+0

谢谢@ rob-campo – Daiwei

回答

1

内部提交按钮触发所需的行为,因为它的浏览器默认行为。您无法通过使用javascript提交表单来触发required行为。您必须找到其他方式向用户展示他们应该如何处理表单。您可能需要使用ngForm附带的$valid财产。

0

当您使用$元素时,您会触发纯JavaScript中的事件,并且角度不知道发生了什么,因此无法在此情况下验证表单。你应该触发表单验证第一:

$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

+0

谢谢。然而,我正在寻找的验证是浏览器内置验证。 –

相关问题