JQuery 验证复选框不起作用
JQuery Validating Check box Not Working
我正在尝试使用 jquery 在我的页面上进行简单验证。顶部 'var a to e' 值工作正常,但我对复选框(var fa 到 ff)有疑问,在页面提交之前必须至少选中一个。我已经尝试过检查,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 变量看起来像这样(我认为它应该是 && 而不是 ||),但它仍然没有工作 - 还有更多想法吗?:
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/
从条件中删除引号:
fa === "false"
使用这个:
fa === false
因为false
是布尔值而"false"
是字符串,而prop()returns布尔值不是字符串。
您的代码中的另一个错误:您提到的是 &
而不是 &&
if (fa === "false" & fb === "false" || fb === "false" || fc === "false" || fd === "false" || fe === "false" || ff == "false") {
^
原因:&
是按位与,而&&
是逻辑与
参见: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
您也在强行匹配条件与其数据类型。所以从 false
中删除 double quotes
并使用,
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?
我正在尝试使用 jquery 在我的页面上进行简单验证。顶部 'var a to e' 值工作正常,但我对复选框(var fa 到 ff)有疑问,在页面提交之前必须至少选中一个。我已经尝试过检查,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 变量看起来像这样(我认为它应该是 && 而不是 ||),但它仍然没有工作 - 还有更多想法吗?:
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/
从条件中删除引号:
fa === "false"
使用这个:
fa === false
因为false
是布尔值而"false"
是字符串,而prop()returns布尔值不是字符串。
您的代码中的另一个错误:您提到的是 &
而不是 &&
if (fa === "false" & fb === "false" || fb === "false" || fc === "false" || fd === "false" || fe === "false" || ff == "false") {
^
原因:&
是按位与,而&&
是逻辑与
参见: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
您也在强行匹配条件与其数据类型。所以从 false
中删除 double quotes
并使用,
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?