Javascript angularjs:在表单验证期间忽略输入
我有一个表单,其中有许多输入字段,由AngularJS验证 如何只忽略其中一个进行验证?它仅用作商品,供用户输入值并向网格(表单的一部分)添加行Javascript angularjs:在表单验证期间忽略输入,javascript,angularjs,Javascript,Angularjs,我有一个表单,其中有许多输入字段,由AngularJS验证 如何只忽略其中一个进行验证?它仅用作商品,供用户输入值并向网格(表单的一部分)添加行 + 在上面的代码中,用户在输入中输入一些文本,然后单击+按钮。问题是在提交表单时,AngularJS会验证输入,这不是我想要的 我已尝试将ng non bindable添加到输入中。这是可行的,但是我显然不能绑定'url'属性 解决方法是什么?您可以在指令链接函数中插入表单控制器,并从验证中删除输入,如下所示: app.directive('cus
+
在上面的代码中,用户在输入中输入一些文本,然后单击+按钮。问题是在提交表单时,AngularJS会验证输入,这不是我想要的
我已尝试将ng non bindable添加到输入中。这是可行的,但是我显然不能绑定'url'属性
解决方法是什么?您可以在指令链接函数中插入表单控制器,并从验证中删除输入,如下所示:
app.directive('customInput', function(){
return {
template: '<input>',
restrict : 'E',
require : '^form',
link: function(scope, elem, attrs, formCtrl) {
var inputCtrl = elem.controller('ngModel');
formCtrl.$removeControl(inputCtrl);
}
}
})
app.directive('customInput',function(){
返回{
模板:“”,
限制:'E',
要求:“^form”,
链接:函数(范围、元素、属性、formCtrl){
var inputCtrl=elem.controller('ngModel');
formCtrl.$removeControl(inputCtrl);
}
}
})
我在这里设置了一个plunkr:输入没有
名称
,不应该得到验证,因为它无法提交可能没有验证,但是表单变脏了。在用户单击按钮并调用addUrl()
后,可以重置表单的$dirty
属性。请参见$setPristine
:或者,可以将输入移出表单并将其放置在表单顶部,具体取决于布局constraints@m.e.conroy我不能这样做,因为表单可能因为其他一些修改而变脏。当您用替换自定义输入时,表单上不再有模型,这就是为什么表单没有显示为脏的。即使没有链接功能,plunker的工作原理也是一样的。如果在模板中添加一个ng model=“field2”,它将不起作用。有没有一种方法可以通过angular访问输入值,而不让字段影响窗体的原始状态?是的,你是对的,我看到了我的错误。必须设置另一个先决条件以使用$removeControl:输入元素必须有名称。该函数定义为:form.$removeControl=function(control){if(control.$name&&form[control.$name]==control){delete form[control.$name];}forEach(错误,函数(队列,验证令牌){form.$setValidity(验证令牌,true,控制);});arrayRemove(控件,控制);};但不幸的是,尽管当时执行了delete,但它并没有达到我的预期。
app.directive('customInput', function(){
return {
template: '<input>',
restrict : 'E',
require : '^form',
link: function(scope, elem, attrs, formCtrl) {
var inputCtrl = elem.controller('ngModel');
formCtrl.$removeControl(inputCtrl);
}
}
})