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