我不理解 javascript 的行为。
我正在对 jquery ui 对话框进行表单验证。看来这是一个javascript问题,而不是jquery问题。
对于验证,我为每个返回 true 或 false 的字段执行一个函数,并且一个布尔变量接收连续 && 运算符的结果。像这样 :
bValid = checkRegexp(validite, /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, "Entrez la date de validit\350 sous la forme JJ/MM/AAAA." );
bValid = bValid && checkLength(libelle, "Libell\351", 1, 100 );
bvalid = bValid && checkLength(description, "Description", 1, 250);
以下是验证功能:
function checkLength( o, n, min, max ) {
if ( o.val().length > max || o.val().length < min ) {
o.addClass( "ui-state-error" );
if(o.val().length == 0) { textError = textError + "le champ " + n + " est requis !\n"; }
else { textError = textError + "Taille de " + n + " entre " + min + " et " + max + "caract\350res.\n"; }
return false;
} else {
return true;
}
}
function checkRegexp( o, regexp, n ) {
if (!(regexp.test(o.val()))) {
o.addClass( "ui-state-error" );
textError = textError + n + "\n";
return false;
} else {
return true;
}
}
预期的行为是所有函数都被执行,并且所有错误的字段都被错误消息的串联标记为错误。作为信息,bValid 变量包含连续 && 运算符的布尔结果。最后一点有效;没问题。
真正的行为是,当函数 return 时false
,似乎没有执行以下函数。结果是只有遇到的第一个错误字段被标记为错误。
为什么 ?