I'm using the jQuery form validator plugin. The form has 5 check boxes. The first of which (master), if checked, checks the remaining 4 and makes them unalterable by the user. If master is unchecked, the remaining 4 boxes go back to being togglable by the user. This functionality works fine. Now, what I want to do is, if all of the check boxes are unchecked, invalidate the form. I also want one specific area (checkBoxErrorHolder) to house the validation error message for the check boxes only. The other error messages should appear in their default positions by their inputs. Here's what I have so far:
<script language="javascript">
$(function() {
$.validator.addMethod("validateCheckBoxes",
function (value, element, params) {
var master=false,
slave1=false,
slave2=false,
slave3=false,
slave4=false;
if ($("#master").attr("checked"))
master = true;
if ($("#slave1").attr("checked"))
slave1 = true;
if ($("#slave2").attr("checked"))
slave2 = true;
if ($("#slave3").attr("checked"))
slave3 = true;
if ($("#slave4").attr("checked"))
slave4 = true;
return (master || (slave1&&slave2&&slave3&&slave4));
},
"One or more check boxes must be checked");
$("#theForm").validate({
rules: {
first: required,
last: required,
email: {required: true, email: true},
master: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave1: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave2: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave3: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave4: { required: true,
validateCheckBoxes: true,
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
},
messages: {
first: "required",
last: "required",
email: {
required: "Email address required",
email: "Please supply a valid email address"
}
}
});
});
</script>
<form id="theForm" ...>
<input type="text" name="first" value="" />
<input type="text" name="last" value="" />
<input type="text" name="email" value="" />
<input type="checkbox" id="master" value="master" class="validateCheckBoxes"/>
<input type="checkbox" id="slave1" value="slave1" class="validateCheckBoxes"/>
<input type="checkbox" id="slave2" value="slave2" class="validateCheckBoxes"/>
<input type="checkbox" id="slave3" value="slave3" class="validateCheckBoxes"/>
<input type="checkbox" id="slave4" value="slave4" class="validateCheckBoxes"/>
<input type="submit" />
</form>
<div id="checkBoxErrorHolder"></div>
Needless to say, I'm not getting the results I expected.
.attr("checked)are missing their closing quotes