我正在制作一个类似的验证表格:
<form id="registerform" method="post" onsubmit=return checkformdata();>
<input type="text" name="fname" value=""/>
<input type="text" name="lname" value=""/>
<input type="checkbox" name="privacy" value="1"/>
</form>
checkformdata()
仅验证复选框字段的名字和姓氏,这是使用jQuery完成的。
这是我试过的代码:
jQuery(document).ready(function() {
// Handler for .ready() called.
jQuery('#registerform').submit(function() {
if (!jQuery("#privacy").is(":checked")) {
alert("none checked");
return false;
}
});
});
它也在工作,但警报字段有两次,例如firstname为空,然后提醒名字和复选框警报出现。我想在 checkformdata(); 函数后显示复选框的警报。是否有可能首先为javascript提供优先级,然后是jquery验证。
先谢谢。
答案 0 :(得分:1)
您应该只有一个功能,这是您正在使用的第二种方法。这两个函数现在都被调用,这不是你想要的。此外,您可以使用$
代替jQuery
。
不要使用return false!除非你知道自己在做什么。使用preventDefault():
$('#registerform').submit(function(event) {
var errorString = [];
// START VALIDATION
if ($("#privacy").is(":checked") ) {
errorString.push("none checked"); // Save for later
}
if ($('[name="fname"]').val).length===0) {
errorString.push("No firstname"); // Save for later
}
if ($('[name="lname"]').val).length===0) {
errorString.push("No lastname"); // Save for later
}
// CHECK IF ERRORS ARE FOUND
if( errorString.length !==0){
event.preventDefault(); // stop the submitting
// Do whatever you like with the string, for example;
alert( "Something went wrong: \n"+errorString.join("\n") ); // alert with newlines
}
// NO ERRORS FOUND, DO SOMETHING
else{
// all good. Do stuff now
}
});