如果你看看我的fiddle
我不确定为什么内部的“提交”按钮会触发浏览器验证(根据required
属性),但“外部按钮”不会?
外部按钮调用submit()
形式的函数,所以我期望相同的行为,不是吗?
我知道这可能不是一个Angular问题,但我正在寻找一个Angular解决方案,这意味着我不必使用$ element(因为我知道这是不好的做法)。
答案 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
您也可以查看: