Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs:在表单验证期间忽略输入_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs:在表单验证期间忽略输入

Javascript angularjs:在表单验证期间忽略输入,javascript,angularjs,Javascript,Angularjs,我有一个表单,其中有许多输入字段,由AngularJS验证 如何只忽略其中一个进行验证?它仅用作商品,供用户输入值并向网格(表单的一部分)添加行 + 在上面的代码中,用户在输入中输入一些文本,然后单击+按钮。问题是在提交表单时,AngularJS会验证输入,这不是我想要的 我已尝试将ng non bindable添加到输入中。这是可行的,但是我显然不能绑定'url'属性 解决方法是什么?您可以在指令链接函数中插入表单控制器,并从验证中删除输入,如下所示: app.directive('cus

我有一个表单,其中有许多输入字段,由AngularJS验证

如何只忽略其中一个进行验证?它仅用作商品,供用户输入值并向网格(表单的一部分)添加行


+
在上面的代码中,用户在输入中输入一些文本,然后单击+按钮。问题是在提交表单时,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);
    }
  }
})