2016-12-06 3 views
0

Возможно идиотский вопрос, но я считаю, это очень сложно:Как получить эту форму, чтобы подать только тогда, когда он должен

Я пытаюсь сделать форму подать только тогда, когда оно конкретно должно быть. Сценарий ниже выполняется каждый раз, когда я отправляю любую другую форму на моей странице.

Как я могу заставить его не выполнять, если только это не требуется?

$('#nurturing_pop_up_form').validate({ 

rules: { 
     emailaddress: { 
      required: true, 
      email: true 
     }, 
     board_meeting: { 
      required: { 
       depends: function() { 
        return $('input[name=in_12_months]').is(':checked')==false && $('input[name=in_6_months]').is(':checked')==false 
       } 
      } 
     } 

}, 

submitHandler: function(form) { 

    var url_remind = 'http://example.com'; 
    var data_remind = $('#nurturing_pop_up_form').serializeArray(); 

    $.ajax({ 
     type: "POST", 
     url: url_remind, 
     data: data_remind, 
     success: function(){ 
     $('.nurturing_pop_up').fadeOut(); 
     }  
    }); 
} 
}); 

Должен ли я добавить что-то вроде этого?

$('#nurturing_pop_up_form').submit(function(e){ 
    e.preventDefault(); 

    $('#nurturing_pop_up_form').validate({ 
    rules: { 
    //the rest like above 

Помощь очень ценится!

+0

Вы не показываете нам ничего, что демонстрирует то, что вы описываете. Создайте * полную * демонстрационную версию, которая включает соответствующую разметку HTML. – Sparky

ответ

0

Я пытаюсь сделать форму отправки только тогда, когда она конкретно должна быть.

Этот процесс обрабатывается автоматически от jQuery Подтвердить. Вы должны не делать что-нибудь особенное, чтобы заставить это.

Сценарий ниже выполняется каждый раз, когда я отправляю любую другую форму на своей странице.

Сценарий «ниже», .validate({...}), это просто процедура инициализации плагина. В коде, который вы указали, вы только инициализируете ОДНУ форму с id="nurturing_pop_up_form". Другие формы на странице не будут полностью затронуты. Возможно, у вас есть недопустимый HTML, дополнительные экземпляры .validate(), другие обработчики отправки или какой-либо ошибочный код, который вы нам не показали.

Как я могу заставить его не выполнять, если только это не требуется?

Я думаю, что ваш вопрос основан на ошибочном предположении о том, что происходит. .validate() предполагается называть только на странице загрузки (DOM ready handler) до инициализировать плагин на вашей форме. Плагин затем автоматически захватывает щелчок, проверяет данные и обрабатывает отправку.

Должен ли я добавить что-то вроде этого?

$('#nurturing_pop_up_form').submit(function(e){ 
    e.preventDefault(); 
    $('#nurturing_pop_up_form').validate({... 

Абсолютно нет. Вы должны никогда положить .validate() в пределах .submit() обработчик для такой же формы. Это совершенно необязательно, задерживает инициализацию плагина и препятствует встроенному обработчику отправки.

Ничто из того, что вы показали, не может объяснить, как/почему будут затронуты другие формы.