您能否看看This Demo并让我知道为什么在验证两种类型的输入选择期间发生此错误?关于使用简单验证使用布尔值问题
从技术上讲,如果用户没有选择复选框和选择选项,并按下提交按钮错误信息出现,并且validRequest
布尔值保留在false
中,那么情况就是如此。现在,如果用户只选择复选框的情况是一样的validRequest
布尔是false
和错误信息显示出来但如果用户忘记选择复选框,只有从列表中选择validateQuery()
验证validRequest
为True
,然后现在的错误信息和警告消息弹出!
您能否让我知道为什么会发生这种情况?
$(function() {
var validRequest = false;
function validateQuery() {
var selectedDoll = $('input:checkbox[name=doll]');
if ($(selectedDoll).is(':checked')) {
validRequest = true;
$('#err').html('');
} else {
validRequest = false;
$('#err').html('Some Thing Wrong!');
}
var selectedIcecream = $("#icecream").val();
if (selectedIcecream == 0) {
validRequest = false;
$('#err').html('Some Thing Wrong!');
} else {
validRequest = true;
$('#err').html('');
}
}
$("#isValid").on("click", function() {
validateQuery();
if(validRequest){ alert('Ready To Go');}
console.log(validRequest);
});
});
#err{color:red;}
<div>
<input type="checkbox" name="doll" value="cat" />Cats
<br />
<input type="checkbox" name="doll" value="dog" />Dogs
<br />
<input type="checkbox" name="doll" value="bird" />Birds
<br />
<br />
<select id="icecream">
<option value="0">Select From List</option>
<option value="chocolate">Chocolate</option>
<option value="vanilla">Vanilla</option>
<option value="strawberry">Strawberry</option>
<option value="caramel">Caramel</option>
</select>
</div>
<p>
<input type="submit" id="isValid" value="Submit now" />
</p>
<p>
<div id="err"></div>
</p>
你有两个独立的条件和一个标志,但要确认只有两个是真的,你也进行了检查。你可能需要将所有东西都重构为嵌套(或复合)条件,或者有两个单独的标志,然后检查两者的真实性。你可以用两个单独的变量,一个数组(然后计数长度)或增加'validRequest'并检查它是否> = 0来做到这一点。只取决于你想如何显示错误 –