2015-06-21 2 views
-1
$(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, но если форма Dont заполнить правильно и я нажимаю представить его как-то повесить или оттянуть немного, как загружается некоторое время, я думаю, я поставил слишком много функций на submit?JQuery предотвращения представить задержку:

Как я должен предотвратить это?

+0

все эти проверки на стороне клиента или сервера? – VladL

+0

checkusername(); checkpassword(); checkemail(); checkconfirmemail(); checkday(); checkselect(); checkyears(); Нужно увидеть эти функции, чтобы узнать больше о задержке. – Paul

+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']

+0

Не забывайте вложенное событие изменения :) –

+0

@ A.Wolff Oh! Я этого даже не заметил. Спасибо, что указали это. Я добавил его к ответу. – Stryner

+0

спасибо, но он все еще задерживается, если я нажал несколько раз, это нормально? или я никогда не должен ставить так много функций на submit? Мне нравится подавать часть. – user3233074

Смежные вопросы