$(document).ready(function () {
$("#reg-username").keyup(checkusername);
$("#reg-password").keyup(checkpassword);
$("#email").keyup(checkemail);
$("#confirm-email").keyup(checkconfirmemail);
$("#register-day").keyup(checkday);
$("#register-month").change(disableselect).change();
$("#register-years").keyup(checkyears);
$(document).click(function() {
$('#contact-form').submit(function(){
checkusername();
checkpassword();
checkemail();
checkconfirmemail();
checkday();
checkselect();
checkyears();
$("input[name='gender'").change(checkgender).change();
if(!checkusername() || !checkpassword() || !checkemail() || !checkconfirmemail() || !checkday() || !checkselect() || !checkyears()){
event.preventDefault();
$("#othersubmit-result").css('color', 'red');
$("#othersubmit-result").html('sumbit not requirements.');
return false;
}else{
$("#othersubmit-result").css('color', 'green');
$("#othersubmit-result").html('sumbit passed.');
return true;
}
});
});
});
我正在制作一个验证客户端表单,这是jquery但是如果表单没有正确填写,我按提交它以某种方式挂起或延迟一点,如加载一段时间,我想是我把太多的功能提交???
我应该如何防止这种情况发生?
答案 0 :(得分:1)
问题可能是您多次绑定事件。以下代码,
$(document).click(function() {
$('#contact-form').submit(function(){
// ... Code Here ...
});
});
每次单击文档时,都会附加一个提交事件处理程序。如果在提交前单击文档10次,则在提交表单时将附加并触发10个提交事件处理程序。
如果页面在加载时存在#contact-form
,您只需将其更改为:
$('#contact-form').submit(function(){
// ... Code Here ...
});
否则,您可以使用event delegation并将其更改为:
$(document).on("submit", '#contact-form', function(){
// ... Code Here ...
});
另外,正如@AWolff指出的那样,你有一个.change
事件嵌套在submit事件中。这应该同样属于document.ready
函数:
$("input[name='gender'").change(checkgender).change();
该行中的选择器也有错误,并且应该有一个结束括号:input[name='gender']