Javascript 使用布尔值进行简单验证存在问题
您能看一下并让我知道为什么在验证两种类型的输入选择时会发生此错误吗 从技术上讲,如果用户没有选择任何一个复选框并选择选项并按下提交按钮,则会显示错误消息,validRequest布尔值保持为false。现在,如果用户仅选择复选框,情况相同,validRequest布尔值为false并显示错误消息,但如果用户忘记选择复选框并仅从列表中选择validateQuery,validateQuery将validRequest验证为True,然后弹出错误消息和警报消息 你能告诉我为什么会这样吗 $function{ var validRequest=假; 函数验证{ var selectedDoll=$“输入:复选框[name=doll]”; 如果$selectedDoll.is':选中{ validRequest=true; $'err'.html; }否则{ validRequest=假; $'err'.html'somethingsoferr!'; } var selectedecream=$icecream.val; 如果选择了edicecream==0{ validRequest=假; $'err'.html'somethingsoferr!'; }否则{ validRequest=true; $'err'.html; } } $isValid.onclick,函数{ 验证性试验; ifvalidRequest{alert'Ready To Go';} console.logvalidRequest; }; }; 错误{颜色:红色;} 猫 狗 鸟 从列表中选择 巧克力 香草 草莓 焦糖 固定: 问题是您有两个独立的if语句,而您必须只有一个。您还检查了选择框是否为空==0,而不是不为空!==0Javascript 使用布尔值进行简单验证存在问题,javascript,jquery,Javascript,Jquery,您能看一下并让我知道为什么在验证两种类型的输入选择时会发生此错误吗 从技术上讲,如果用户没有选择任何一个复选框并选择选项并按下提交按钮,则会显示错误消息,validRequest布尔值保持为false。现在,如果用户仅选择复选框,情况相同,validRequest布尔值为false并显示错误消息,但如果用户忘记选择复选框并仅从列表中选择validateQuery,validateQuery将validRequest验证为True,然后弹出错误消息和警报消息 你能告诉我为什么会这样吗 $func
您有两个独立的条件和一个标志,但仅当两者都为真时才需要验证。您需要将所有内容重新构造为嵌套或复合条件,或者使用两个单独的标志,然后检查两者的真实性。您可以使用两个单独的变量,一个数组,然后计算长度或增量validRequest,并检查它是否>=0。这取决于你想如何显示错误Hanks Stanimir,现在可以了但我还有一个问题?如果生成不同的错误消息,如,请指定复选框,并从列表中选择每种类型的错误。我们如何在一种条件下处理它们?啊,那是不同的。让我重写这个例子。很抱歉耽搁了,现在试试。
$(function () {
var validRequest = false;
function validateQuery() {
var selectedDoll = $('input:checkbox[name=doll]');
var selectedIcecream = $("#icecream").val();
// checkbox is not checked, but select is
if ($(selectedDoll).is(':checked') && selectedIcecream == 0) {
validRequest = false;
$('#err').html('select not selected');
} else if ($(selectedDoll).is(':checked') == false && selectedIcecream != 0) {
validRequest = false;
$('#err').html('checkbox not checked');
} else if ($(selectedDoll).is(':checked') == false || selectedIcecream == 0) {
validRequest = false;
$('#err').html('checkbox not checked or select not selected');
} else {
validRequest = true;
$('#err').html('');
}
}
$("#isValid").on("click", function () {
validateQuery();
if(validRequest){ alert('Ready To Go');}
console.log(validRequest);
});
});
<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>
#err{color:red;}