JQuery验证复选框不起作用

时间:2015-01-19 11:32:54

标签: javascript jquery validation

我正在尝试使用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/

2 个答案:

答案 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?