Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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中,当ng模型等于未定义时,获取字段长度_Javascript_Angularjs - Fatal编程技术网

Javascript 如何:在angularjs中,当ng模型等于未定义时,获取字段长度

Javascript 如何:在angularjs中,当ng模型等于未定义时,获取字段长度,javascript,angularjs,Javascript,Angularjs,在我的controllers.js中,我试图验证一个字段,该字段不是必需的,但在输入内容时,该字段上有验证规则。如果字段无效,我不能禁用保存按钮。(根据用户,是的,我知道这是非常反角度的) 该字段的minlength为2,maxlength为100,并且必须通过ng模式。。。如果用户在其中输入任何内容 所以,我需要能够读取该字段的长度和值。。。即使字段的ng模型=未定义 因此,我在controllers.js中的方法是: var myPattern = /^[a-zA-Z0-9\ \-\.\,\

在我的controllers.js中,我试图验证一个字段,该字段不是必需的,但在输入内容时,该字段上有验证规则。如果字段无效,我不能禁用保存按钮。(根据用户,是的,我知道这是非常反角度的)

该字段的minlength为2,maxlength为100,并且必须通过ng模式。。。如果用户在其中输入任何内容

所以,我需要能够读取该字段的长度和值。。。即使字段的ng模型=未定义

因此,我在controllers.js中的方法是:

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(使用它做一些事情),则继续前进