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?