我正在尝试使用jquery在我的页面上进行简单的验证。顶部的“var a到e”值工作正常,但我的问题是复选框(var fa到ff),在页面提交之前必须至少检查一次。我已经尝试过check,prop和bog-standard val(使用true / false,0,isnull等),但都允许提交页面而不是抛出#edialog消息。
谁能看到我出错的地方?提前谢谢!
<script>
function validateForm() {
var a = $('#Name').val();
var b = $('#Ward').val();
var c = $('#Job').val();
var d = $('#LDate').val();
var e = $('#Reason').val();
var fa = $('#MCHFT').prop('checked');
var fb = $('#ONHS').prop('checked');
var fc = $('#PSEC').prop('checked');
var fd = $('#PUBSEC').prop('checked');
var fe = $('#EDU').prop('checked');
var ff = $('#NEMP').prop('checked');
if (a == null || a == "") {
$('#EC1').show();
$('#edialog').dialog('open');
return false;
}
if (b == null || b == "") {
$('#EC2').show();
$('#edialog').dialog('open');
return false;
}
if (c == null || c == "") {
$('#EC3').show();
$('#edialog').dialog('open');
return false;
}
if (d == null || d == "") {
$('#EC4').show();
$('#edialog').dialog('open');
return false;
}
if (e == null || e == "") {
$('#EC5').show();
$('#edialog').dialog('open');
return false;
}
if (fa === "false" & fb === "false" || fb === "false" || fc === "false" || fd === "false" || fe === "false" || ff == "false") {
$('#EC8').show();
$('#edialog').dialog('open');
return false;
}
}
</script>
编辑:我刚注意到一个错误,感谢指针我更新了我的代码,以便f变量看起来像这样(因为它应该是&amp;&amp;而不是||我认为)但它仍然存在不工作 - 更多的想法?:
if (fa === false && fb === false && fb === false && fc === false && fd === false && fe === false && ff == false) {
$('#EC8').show();
$('#edialog').dialog('open');
return false;
}
我创建了一个JSFiddle(完全没有工作 - 我是新手!):http://jsfiddle.net/f5nwv4by/
答案 0 :(得分:2)
从条件中删除引号:
fa === “false”
使用此:
fa === false
因为false
是布尔值,但"false"
是字符串,而prop()返回布尔值而不是字符串。
您的代码中的另一个错误:您提到&
而不是&&
if (fa === "false" & fb === "false" || fb === "false" || fc === "false" || fd === "false" || fe === "false" || ff == "false") {
^
原因:&
是按位AND ,&&
是逻辑AND
请参阅:Whats the difference between & and && in JavaScript?
试试这段代码:
if (fa === false || fb === false || fc === false || fd === false || fe === false || ff == false) {
$('#EC8').show();
$('#edialog').dialog('open');
return false;
}
复选框DEMO
的工作验证答案 1 :(得分:1)
您也强制将条件与其数据类型匹配。因此,请从double quotes
和使用
false
if (fa === false && fb === false || fb === false || fc === false || fd === false || fe === false || ff == false) {
阅读差异Which equals operator (== vs ===) should be used in JavaScript comparisons?