Javascript 如何不验证ng click中的隐藏字段?

Javascript 如何不验证ng click中的隐藏字段?,javascript,angularjs,Javascript,Angularjs,当用户单击submit按钮时,我正在验证表单,使用ng click我正在调用函数,在此函数中我正在传递form1。$invalid,基于此变量,我正在放置条件,如果条件为true,验证函数将调用,这里的问题是mobile是隐藏字段,这个隐藏字段也在检查验证。如何跳过或不验证移动字段隐藏状态,我尝试了下面的代码 html ---- 我建议更好的方法是在不需要使用ng if时将移动输入移出表单,而不是仅使用ng show将其隐藏 Ng if将确保在条件为false时输入不会呈现在DOM树中,因此不会

当用户单击submit按钮时,我正在验证表单,使用ng click我正在调用函数,在此函数中我正在传递form1。$invalid,基于此变量,我正在放置条件,如果条件为true,验证函数将调用,这里的问题是mobile是隐藏字段,这个隐藏字段也在检查验证。如何跳过或不验证移动字段隐藏状态,我尝试了下面的代码

html ----


我建议更好的方法是在不需要使用ng if时将移动输入移出表单,而不是仅使用ng show将其隐藏

Ng if将确保在条件为false时输入不会呈现在DOM树中,因此不会触发验证


您可以对ng if和ng show之间的差异进行一些研究,以便更好地了解这两个指令。

尝试使用ng if避免验证。如果希望mobile跳过验证,请使用表达式将ng if设为false

语法:ng if=“expression”

有关更多信息,请转到此链接

有关ng if和ng hide/ng show之间的差异,请参阅以下链接


一些观察结果:

  • 不要使用
    ng show
    来隐藏和显示输入,只需使用
    元素来显示
    mobile
    字段即可
  • 无需使用变量
    $scope.user
    $scope.mobile
    来隐藏和显示输入
  • user
    输入字段中添加
    required
    属性,该属性不在
    mobile
    输入字段中,因为您不想验证mobile
    字段
  • 使用
    SubmitForm(form1.$invalid)
    而不是
    SubmitForm(regForm.$invalid)
    ,因为您的表单名是
    form1
    而不是
    regForm
演示

var myApp=angular.module('myApp',[]);
myApp.controller('MyCtrl',函数($scope){
$scope.SubmitForm=函数(val){
控制台日志(val);
如果(val==真){
$scope.validation();
}
}
$scope.validation=函数(){
$scope.requiredMsg=“输入字段是必需的”;
}
});

{{requiredMsg}

提交
我该怎么做,请帮助memobile字段将仅显示用户选择的特定国家,如“美国、英国、印度”,否则它将隐藏。@ramesh1226使用ng if=“mobile”和ng if=“user”代替ng show现在我非常理解,但它也尝试了ng if,但直到它不起作用为止添加一个JSFIDLE,以便我可以从我的角度进行检查
 <form name="form1" novalidate>
     <input ng-show="user" type="text" name="user" ng-model="frm1.user" />
    <p ng-show="form1.user.$error.required"><span ng-show="errorMsgShow" ng-required="true">{{requiredMsg}}</span></p>
     <input ng-show="mobile" type="text"  name="mobile" ng-model="frm1.mobile" />
    <p ng-show="form1.mobile.$error.required"><span ng-show="errorMsgShow" ng-required="true">{{requiredMsg}}</span></p>
    <button ng-click="SubmitForm(regForm.$invalid);">submit</button>
 </form>
$scope.SubmitForm = function(val){

$scope.user= true;
$scope.mobile = false;
 if (if(val ===true){
            $scope.validation();
  }
}
$scope.validation = function(){
  $scope.requiredMsg="input fieldis required";
}