Javascript 如何:在angularjs中,当ng模型等于未定义时,获取字段长度
在我的controllers.js中,我试图验证一个字段,该字段不是必需的,但在输入内容时,该字段上有验证规则。如果字段无效,我不能禁用保存按钮。(根据用户,是的,我知道这是非常反角度的) 该字段的minlength为2,maxlength为100,并且必须通过ng模式。。。如果用户在其中输入任何内容 所以,我需要能够读取该字段的长度和值。。。即使字段的ng模型=未定义 因此,我在controllers.js中的方法是:Javascript 如何:在angularjs中,当ng模型等于未定义时,获取字段长度,javascript,angularjs,Javascript,Angularjs,在我的controllers.js中,我试图验证一个字段,该字段不是必需的,但在输入内容时,该字段上有验证规则。如果字段无效,我不能禁用保存按钮。(根据用户,是的,我知道这是非常反角度的) 该字段的minlength为2,maxlength为100,并且必须通过ng模式。。。如果用户在其中输入任何内容 所以,我需要能够读取该字段的长度和值。。。即使字段的ng模型=未定义 因此,我在controllers.js中的方法是: var myPattern = /^[a-zA-Z0-9\ \-\.\,\
var myPattern = /^[a-zA-Z0-9\ \-\.\,\']+$/;
if ((hasValue(vm.MyField) &&
(vm.MyField.length < 2 ||
vm.MyField.length > 100 ||
!myPattern.test(vm.MyField)))) {
vm.hasError_Overall = true;
vm.hasError_Certs = true;
errMsg += errMsg.length > 1 ? "<br />" : "";
errMsg += "MyField may only contain letters, numbers, spaces, and these symbols: - . , ', and be between 2 and 100 characters long.";
}
var myPattern=/^[a-zA-Z0-9\\-\.\,\']+$/;
if((hasValue(vm.MyField)&&
(vm.MyField.length<2||
vm.MyField.length>100||
!myPattern.test(vm.MyField))){
vm.hasrerror_total=true;
vm.hasError\u Certs=true;
errMsg+=errMsg.length>1?“
”:”;
errMsg+=“MyField只能包含字母、数字、空格和这些符号:-、”,长度介于2到100个字符之间。”;
}
因此,如果用户输入(比如)1个字符,然后单击“保存”按钮,我希望能够进入该if语句,以便显示消息。只需去掉if语句中的第一个条件,并处理在if语句之前未定义该条件的情况。详情如下:
if(!hasValue(vm.MyField)){
vm.MyField="";
}
var myPattern = /^[a-zA-Z0-9\ \-\.\,\']+$/;
if (vm.MyField.length < 2 ||
vm.MyField.length > 100 ||
!myPattern.test(vm.MyField)) {
vm.hasError_Overall = true;
vm.hasError_Certs = true;
errMsg += errMsg.length > 1 ? "<br />" : "";
errMsg += "MyField may only contain letters, numbers, spaces, and these symbols: - . , ', and be between 2 and 100 characters long.";
}
if(!hasValue(vm.MyField)){
vm.MyField=“”;
}
变量myPattern=/^[a-zA-Z0-9\\-\.\,\']+$/;
如果(vm.MyField.length<2||
vm.MyField.length>100||
!myPattern.test(vm.MyField)){
vm.hasrerror_total=true;
vm.hasError\u Certs=true;
errMsg+=errMsg.length>1?“
”:”;
errMsg+=“MyField只能包含字母、数字、空格和这些符号:-、”,长度介于2到100个字符之间。”;
}
您是否考虑过在DOM输入元素上使用ng模式
?你可以给它传递一个正则表达式。IMHO,我认为如果每次验证都使用ng maxlength
,ng minlength
,ng pattern
,等等,然后在保存函数中询问if$form.$valid
。。。或者类似的。对,但是如果vm.MyField===undefined
,那么您不能处理.length
。如果vm.MyField违反了它的ng minLength规则,那么它将是未定义的。对。这就是为什么在if声明之前处理它。然后,如果未定义,则将其设置为空字符串。空字符串的长度为0。但该字段实际上不是空的。它有一个特点。只是没有足够的字符来防止违反规则。关键是,当验证规则违反时,我试图能够看到输入的ng模型中有什么。所以如果规则说“最少两个字符”,里面有一个字符,我想看看这个字符是什么,明白了吗。所以在if语句之前处理这个问题。例如,如果vm.myField.length==1(使用它做一些事情),则继续前进