如果你看看我的小提琴
我不确定为什么内部“提交”按钮会触发浏览器验证(根据required
属性)但“外部按钮”不会?
外部按钮调用表单submit()
函数,所以我期望相同的行为,不是吗?
我知道这可能不是 Angular 问题,但我正在寻找一个 Angular 解决方案,这意味着我不必使用 $element (我知道这是不好的做法)。
如果你看看我的小提琴
我不确定为什么内部“提交”按钮会触发浏览器验证(根据required
属性)但“外部按钮”不会?
外部按钮调用表单submit()
函数,所以我期望相同的行为,不是吗?
我知道这可能不是 Angular 问题,但我正在寻找一个 Angular 解决方案,这意味着我不必使用 $element (我知道这是不好的做法)。
内部提交按钮会触发所需的行为,因为它是浏览器的默认行为。您不能通过required
使用 javascript 提交表单来触发该行为。您必须找到其他方式来向用户展示他们应该如何处理表单。您可能希望$valid
使用ngForm
.
当您使用 $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
你也可以检查这个: