Javascript 如何手动触发表单';让我们用AngularJS提交?
我有一个我想要嵌套的表单,但这是不可能的,因为HTML不能接受嵌套表单。有没有办法在AngularJS的第一个表单上手动调用submit(触发验证,例如必需) 下面是代码的样子:Javascript 如何手动触发表单';让我们用AngularJS提交?,javascript,angularjs,Javascript,Angularjs,我有一个我想要嵌套的表单,但这是不可能的,因为HTML不能接受嵌套表单。有没有办法在AngularJS的第一个表单上手动调用submit(触发验证,例如必需) 下面是代码的样子: <div ng-conroller="ContactController"> <form ng-submit="saveHeaderAndDetail()"> <label for="Description">Description</label>
<div ng-conroller="ContactController">
<form ng-submit="saveHeaderAndDetail()">
<label for="Description">Description</label>
<input type="text" ng-model="Description" required/>
<input type="text" style="visibility:hidden" />
</form>
<form ng-submit="addToDetail()">
...
</form>
<input type="button"
ng-click="what code could trigger the first form's submit?"/>
</div>
描述
...
顺便说一句,如果这有助于创建捕获事件的指令,则两个窗体都在一个控制器下:
var-app=angular.module('myApp',[]);
函数MyCtrl($scope){
$scope.triggerSubmit=函数(){
$scope.$broadcast('myEvent');
console.log('broad');
};
$scope.onSubmitted=函数(){
警报(‘已提交’);
};
}
应用程序指令('submitOn',函数(){
返回{
链接:功能(范围、elm、属性){
作用域$on(attrs.submitOn,function(){
//我们无法立即触发submit,或者我们得到$digest已在进行中错误:-[(因为ng submit本身有一个$apply)
setTimeout(函数(){
elm.trigger(“提交”);
});
});
}
};
});
形式。。。
提交
您可以使用指令创建嵌套表单。它类似于:
<form name="accountForm">
<div data-ng-form="detailsForm">
<input required name="name" data-ng-model="name">
</div>
<div data-ng-form="contactsForm">
<input required name="address" data-ng-model="address">
</div>
<button type="submit">Save</button>
</form>
拯救
这样,当
accountForm的submit
将被触发时,它也将验证嵌套的ng表单。我在这里回答了一个类似的问题
基本上,您可以通过触发$validate
事件来触发验证
isFormValid = function($scope, ngForm) {
$scope.$broadcast('$validate');
if(! ngForm.$invalid) {
return true;
}
有关工作代码示例&一种有助于显示验证消息的小实用程序方法,请参见上面链接中的答案。我们始终可以使用提交按钮直接提交表单
()来自javascript的函数
document.getElementById("myform").submit()
通过这种方式,我们可以先使用angularjs验证表单,如果表单有效,然后使用submit方法提交表单。有一种更简单的方法,您可以为应用程序中的每个表单指定一个名称,然后您就可以发送要触发的表单的整个angular对象或执行任何您想要的操作信息技术。例如:
<div ng-conroller="ContactController">
<form name="myFirstForm" ng-submit="saveHeaderAndDetail()">
<label for="Description">Description</label>
<input type="text" ng-model="Description" required/>
<input type="text" style="visibility:hidden" />
</form>
<form name="mySecondForm" ng-submit="addToDetail()">
...
</form>
<input type="button"
ng-click="saveHeaderAndDetail(myFirstForm)"/>
</div>
按钮上不属于表单的代码会触发提交,这对我来说很好,是一个新的学习,+1。但它不会触发表单上的验证。请看我的验证意思是什么?有没有一种方法可以不包含jquery?ng submit将“submit”事件绑定到一个元素。好吧,这应该附加到一个元素上在或输入[type=submit]或输入[type=button]DOM节点上,它不应该工作吗?如果您有一个带有ng submit的表单,一个带有手动ng click的表单,在其中调用$scope.$broadcast('$validate');
saveHeaderAndDetail (myFirstForm) {
myFirstForm.$submitted = true
...
}