javascriptの挙動がわかりません。
jquery ui ダイアログのフォーム検証を行っています。jqueryの問題ではなく、JavaScriptの問題のようです。
検証のために、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
に、次の関数が実行されないように見えることです。その結果、最初に一致した間違ったフィールドのみが間違っているとマークされます。
なんで ?