私のifelseステートメントは最初のものだけをチェックしますか?なぜそれが残りの条件をチェックしないのか誰もが知っていますか?-それは残りをスキップします。条件の記述を容易にするために、3つの変数を設定しました。以下はHTMLとJQUERYです
<select id="tToth">
<option value="0">Select a state</option>
<option value="1">California</option>
<option value="2">Colorado</option>
</select>
<br>
<br>
<select id="tState">
<option value="0">Select a Zone</option>
<option value="1">west</option>
<option value="2">sout</option>
<option value="3">east</option>
</select>
<br>
<br>
<input type="text" id="boxa" size="6" required="required"></input>
<br>
<br>
<input type="text" id="boxb" size="6" required="required"></input>
<br>
<br>
<input type="text" id="boxb" size="6" required="required"></input>
<br>
<br>
<input type="button" id="answerButton" value="Get Answer"></input>
var plate = $("#tToth").val();
var bowl = $("#tState").val();
var emptyTextBoxes = $('input:text').filter(function () {
return this.value === "";
});
var string = "The blank textbox ids are - \n";
emptyTextBoxes.each(function () {
string += "\n" + this.id;
});
if (emptyTextBoxes && plate && bowl) {
alert("empty boxes and plate & bowl");
$(".error").show();
} else if (emptyTextBoxes && !plate && !bowl) {
alert("empty boxes, plate and bowl");
$(".error").show();
} else if (!emptyTextBoxes && plate && !bowl) {
alert("nothing empty");
$(".error").show();
}
質問している質問を正確に伝えるのは難しいですが、if / elseテストが機能している方法にいくつかの問題があるので、それらについて説明します。おそらく、それがあなたにとって機能していないことを説明します。
まずemptyTextBoxes
、jQueryオブジェクトであり、オブジェクトは常に真実です。つまり!emptyTextBoxes
、真になることは決してないので、最後の条件が満たされることは決してないということです。
jQueryオブジェクトが空であるかどうか(たとえば、DOM要素が含まれていないかどうか)をテストする場合は、emptyTextBoxes.length
代わりにチェックします。
したがって、if / elseのその部分だけを修正すると、次のようになります。
// if we have some emptyTextBoxes, but we do have values for plate and bowl
if (emptyTextBoxes.length && plate && bowl) {
alert("empty boxes and plate & bowl");
$(".error").show();
// if we have emptyTextBoxes, but no values for plate and bowl
} else if (emptyTextBoxes.length && !plate && !bowl) {
alert("empty boxes, plate and bowl");
$(".error").show();
// there are no empty text boxes, we have plate, but not bowl
} else if (!emptyTextBoxes.length && plate && !bowl) {
alert("nothing empty");
$(".error").show();
}
それを超えると、考えられるすべての条件をカバーしておらず、一部の条件がどの条件にも一致せず、テストで必要な条件が得られているかどうかが不明なため、論理エラーが発生する可能性があります。テストしている条件を説明するために、各条件にコメントを追加しました。
特に、場合ので、最後の条件が満たされない場合がありと思われるplate
とbowl
している<input>
分野、ゼロを持ってすることはできませんemptyTextBoxes
が、用がbowl
あればあるため空にbowl
空だった、そしてemptyTextBoxes
それで何かを持っているでしょう。
これらのif / else条件のロジックをさらに整理するために支援が必要な場合は、各if
条件に一致させたいものを言葉で説明する必要があります。そのための適切なロジックを支援できます。
詳細な説明に基づいて、回答ボタンをクリックすると各タイプの入力をチェックするコードのバージョンを次に示します。
$("#answerButton").click(function(e) {
var plate = $("#tToth").val();
var bowl = $("#tState").val();
var emptyTextBoxes = $('input:text').filter(function () {
return this.value === "";
});
if (plate === "0") {
alert("Please select a State");
} else if (bowl === "0") {
alert("Please select a Zone");
} else if (emptyTextBoxes.length !== 0) {
alert("All text fields must contain a value")
} else {
alert("All values good");
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加