2014-09-19 3 views
1

Итак, вот моя проблема.Не удается вернуть значение false по форме

Я разрабатываю Wordpress и использую плагин для управления процессом бронирования отеля.

Форма генерируется и не имеет классов/идентификаторов, поэтому мне нужно найти ее через jQuery.

jQuery(document).on('ready', function(){ 
    // Clicking on submit button 
    jQuery('.booking-buttons input[type="submit"]').on('click', function(evt) { 
     if (validation()) { 
      console.log('yes'); 
      return true; 
     } else { 
      console.log('no'); 
      evt.preventDefault(); 
      return false; 
     } 
    }); 

    validation = function() { 
     // if fields validate 
      // return true 
     // else 
      // return false 
     // return false 
    } 

}); 

Я также пробовал различные onsubmit/клик вариации и форма еще не представляет, независимо от того, что код также был помещен до и после плагинов JS не включает в себя и до сих пор нет радости.

Интересная вещь также, она работает в Chrome Canary, но ничего больше.

Есть ли у кого-нибудь еще такая проблема и какие-либо указания?

Благодаря

ответ

1

Вы могли бы просто использовать в HTML:

<form onsubmit="return validation()"> 

Или, если вы действительно хотите использовать JQuery:

$("form").submit(function(){return validation();}); 
+0

Я ничего не могу добавить в форму, поскольку она генерируется с помощью короткого кода, и я не могу вмешиваться в плагин по причинам обновления. – RustyCollins

+0

Извините @ LukeRoberts, я редактировал свой ответ, если бы вы прокомментировали первую версию ... –

0

Попробуйте приложить к форме submit случае вместо:

// Shorter DOM ready with local $ for shorter/standard jQuery code 
jQuery(function($){ 
    // Clicking on submit button 
    $('.booking-buttons').closest('form').submit(function(evt) { 
     if (validation()) { 
      console.log('yes'); 
      return true; 
     } else { 
      console.log('no'); 
      evt.preventDefault(); 
      return false; 
     } 
    }); 

    validation = function() { 
     // if fields validate 
      // return true 
     // else 
      // return false 
     // return false 
    } 

}); 

Основываясь на ваших комментариях: как и в готовом обработчике DOM, единственной другой проблемой может быть создание динамической формы.

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

е, .g.

// Shorter DOM ready with local $ for shorter/standard jQuery code 
jQuery(function($){ 
    // Clicking on submit button 
    $(document).on('submit', 'form:has(".booking-buttons")', function(evt) { 
     if (validation()) { 
      console.log('yes'); 
      return true; 
     } else { 
      console.log('no'); 
      evt.preventDefault(); 
      return false; 
     } 
    }); 

    validation = function() { 
     // if fields validate 
      // return true 
     // else 
      // return false 
     // return false 
    } 

}); 

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

Если вы позволяете для нескольких форм на странице, то вам необходимо пройти «текущий» формы методов проверки:

// Shorter DOM ready with local $ for shorter/standard jQuery code 
jQuery(function($){ 
    // Clicking on submit button 
    $(document).on('submit', 'form:has(".booking-buttons")', function(evt) { 
     if (validation($(this))) { 
      console.log('yes'); 
      return true; 
     } else { 
      console.log('no'); 
      evt.preventDefault(); 
      return false; 
     } 
    }); 

    validation = function($form) { 
     // if fields within $form are validate 
      // return true 
     // else 
      // return false 
     // return false 
    } 
}); 
+0

Это работает как шарм, должно быть, так, как я пытался выполнить функцию отправки, Большое вам спасибо! (ps, я бы повысил, но у меня не хватило Rep) :( – RustyCollins

+0

Если вы пишете плагин, перейдите к последней версии, чтобы разрешить использование нескольких форм на странице. –

0
<script type="text/javascript"> 
    function validateForm() { 
     var x = document.getElementById('test').value; 
     if (x == null || x == 0 || x == "0") { 
      alert("Stop"); 
     } 
     else 
      document.form.submit(); 
    } 
</script> 

чек, но я не переписать код .. я использовал его из моего проекта, который я вам даю в качестве примера.

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