最初の空白のテキストボックスが見つかった場合、falseを返し、関数から戻りたい
function validate(){
$('input[type=text]').each(function(){
if($(this).val() == "")
return false;
});
}
そして、上記のコードは私のために働いていません:(誰も助けることができますか?
あなたは飛び出しているが、innerループから、代わりに、次のように、特定の「値なし」チェックにセレクターを使用します。
function validate(){
if($('input[type=text][value=""]').length) return false;
}
または、ループ内に入るときに結果を設定し、外部ループからthat結果を返します。
function validate() {
var valid = true;
$('input[type=text]').each(function(){
if($(this).val() == "") //or a more complex check here
return valid = false;
});
return valid;
}
次のようにできます:
function validate(){
var rv = true;
$('input[type=text]').each(function(){
if($(this).val() == "") {
rv = false; // Set flag
return false; // Stop iterating
}
});
return rv;
}
見つからない場合は、true
を返したいと想定しています。
これは、each
をまったく使用したくないシトーションの1つであることがわかります。
function validate(){
var inputs = $('input[type=text]');
var index;
while (index = inputs.length - 1; index >= 0; --index) {
if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer
return false;
}
}
// (Presumably return something here, though you weren't in your example)
}
$(selector).each
の動作と、OPのコードでfalseを返すことを尊重しない理由をクリアするために、既存の回答に何かを追加したいと思います。
$(selector).each
内のreturn
キーワードは、ループを中断または継続するために使用されます。 return false
を使用する場合、for/while
ループ内のbreak
ステートメントと同等です。 false以外を返すことは、continue
ループのfor
ステートメントと同じです。すぐに次の反復にスキップします。 ソース
Falseを返すため、ループが中断し、関数はundefined
を返すことになります。あなたのオプションは、$.each
の外でvarを使用するか、@ TJCrowderが書いたようにそれを完全に使用しないことです。