2015-07-09 3 views
-3

Я хотел бы подтвердить свою форму, когда кнопка «Отправить» нажата на эту форму до отправки страницы.event.preventDefault(); не работает, как я ожидаю

Функция проверки правильности вызывается и выполняется как ожидалось; но форма не представляется впоследствии, оставляя изменения несохраненными.

Вот часть кода -

$j("#btnSubmit").on("click",function(event){ 
      event.preventDefault(); 
      alert("validation complete"); 
      return; 
}); 

<button type="submit" name="btnSubmit" id="btnSubmit" value="btnSubmit"> </button> 
+0

Так вы предотвратите представление по умолчанию, поэтому при проверке и он проходит, вы затем отправляете форму, возвращаете что-то или ничего не делаете? – j08691

+0

Как вы ** ожидаете ['preventDefault()'] (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) для работы? –

+2

@ angelcool.net - preventDefault вызывается - что бы вернуть true? – j08691

ответ

1

event.preventDefault(); останавливает выполнение. Дайте id вашей форме и добавьте $('#formid').submit(); вместо вашего return.

Edit:

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

+0

Это просто вызовет исходное событие 'submit', вызывая массивный цикл. –

+0

см. Мое редактирование. Теперь он будет работать без петли – Keerthi

+0

Да, это сработает, хорошая идея. –

1

Вы отменяя представить событие с event.preventDefault(), так что теперь вам нужно вручную обрабатывать представить после проверки вместо того, чтобы просто делать return.

Затем вы можете использовать что-то вроде AJAX для фактического представления. Обратитесь к методу Keerthi для не AJAX-способа представления формы.

Пожалуйста, имейте в виду, что если вы делаете $('#myForm').submit() или что-то подобное, оно просто запускает вашу оригинальную функцию для проверки и создания цикла.

1

Вы хотите изучить функцию $().submit().

Если вы preventDefault(), вы останавливаете клик даже от распространения, поэтому подача будет определенно не срабатывать. То, что вы хотите сделать, это либо захватить отправить событие

$('#myForm').submit(function(){ validate(); return; })

или вы будете хотеть, чтобы вручную вызвать отправить в обработчике щелчка

$("#btnSubmit").on("click",function(event){ 
    event.preventDefault(); 
    alert("validation complete"); 
    $('#myForm).submit(); 
}); 
Смежные вопросы