1

如果你看看我的小提琴

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

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

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

4

2 回答 2

1

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

于 2013-09-19T18:01:23.623 回答
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 - 如何以嵌套形式触发提交

于 2013-09-13T12:36:05.140 回答