Я просмотрел кучу страниц, но не нашел своей проблемы, поэтому мне пришлось написать сообщение.
У меня есть форма с кнопкой отправки, и при отправке я хочу, чтобы она НЕ обновлялась ИЛИ перенаправлялась. Я просто хочу, чтобы jQuery выполнял функцию.
Вот форма:
<form id="contactForm">
<fieldset>
<label for="Name">Name</label>
<input id="contactName" type="text" />
</fieldset>
<fieldset>
<label for="Email">Email</label>
<input id="contactEmail" type="text" />
</fieldset>
<fieldset class="noHeight">
<textarea id="contactMessage" cols="20"></textarea>
<input id="contactSend" class="submit" type="submit" onclick="sendContactForm()" />
</fieldset>
</form>
<small id="messageSent">Your message has been sent.</small>
А вот и jQuery:
function sendContactForm(){
$("#messageSent").slideDown("slow");
setTimeout('$("#messageSent").slideUp();$("#contactForm").slideUp("slow")', 2000);
}
Я пробовал использовать в форме элемент действия и без него, но не знаю, что делаю не так. Что меня больше всего раздражало, так это то, что у меня есть пример, который делает это идеально: Пример страницы
Если вы хотите увидеть мою проблему вживую, перейдите на stormink.net (мой сайт) и посмотрите на боковую панель, где написано «Пришлите мне и по электронной почте» и «Подписка на RSS». Обе формы, над которыми я пытаюсь заставить это работать.
источник
false
препятствует отправке?Вот:
Вместо использования события onClick вы будете использовать привязку обработчика события click с помощью jQuery к кнопке отправки (или любой другой кнопке), которая будет принимать submitClick как обратный вызов. Мы передаем событие обратному вызову, чтобы вызвать preventDefault , что предотвратит отправку формы щелчком.
источник
$('#contactSend').click(function(e) { submitClick(e) });
или$('#contactSend').click(submitClick);
В открывающем теге вашей формы установите атрибут действия следующим образом:
источник
myForm.submit();
как можно скорее, но тогда вы загружаете страницу дважды.e.preventDefault()
или inreturn false
в функции onsubmit. stackoverflow.com/questions/19454310/…Похоже, вам не хватает файла
return false
.источник
Если вы хотите, чтобы отображались ошибки браузера по умолчанию , например, те, которые вызываются атрибутами HTML (отображаются перед обработкой JS клиентского кода):
Вы должны использовать
submit
событие вместоclick
события. В этом случае автоматически отобразится всплывающее окно с запросом « Заполните это поле ». Даже сpreventDefault
:Как упоминалось ранее ,
return false
распространение прекратится (т. Е. Если к отправке формы подключено больше обработчиков, они не будут выполнены), но в этом случае действие, запускаемое браузером, всегда будет выполняться первым. Даже с areturn false
в конце.Поэтому, если вы хотите избавиться от этих всплывающих окон по умолчанию , используйте
click
событие на кнопке отправки:источник
Альтернативным решением было бы не использовать тег формы и обрабатывать событие щелчка на кнопке отправки через jquery. Таким образом, страница не будет обновляться, но в то же время есть обратная сторона: кнопка «Enter» для отправки не будет работать, а также на мобильных телефонах вы не получите кнопку перехода (стиль на некоторых мобильных устройствах). Так что придерживайтесь использования тега формы и используйте принятый ответ.
источник