我的if else语句只检查第一个? 任何人都知道为什么它不检查其余的条件? - 它会跳过剩下的。我设置了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();
}
答案 0 :(得分:0)
很难确切地说出你要问的问题,但是如果你的if / else测试工作如何,有几个问题是错误的,所以我会解释这些,也许这解释了什么不适合你。 / p>
首先,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");
}
});
答案 1 :(得分:-1)
尝试使用if(!! your_variable)。因为那将检查变量是否未定义,或者为null还是空。