jquery阻止提交延迟

时间:2015-06-21 08:22:18

标签: jquery

  $(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但是如果表单没有正确填写,我按提交它以某种方式挂起或延迟一点,如加载一段时间,我想是我把太多的功能提交???

我应该如何防止这种情况发生?

1 个答案:

答案 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']