событие.preventDefault не работает
У меня здесь есть этот простой код, ничего слишком сложного.
$("input#send").submit(function(event){
event.preventDefault();
$.ajax({
type: 'POST',
url: add.php,
data: data,
success: success,
dataType: dataType
});
});
Когда бы я ни нажал на кнопку "Отправить", функция event.preventDefault
не работает, и страница загружается.
Есть идеи, почему?
7 ответов:
Форма имеет событие submit, а не кнопку. Кроме того, идентификатор должен быть уникальным, поэтому
tag#id
может быть просто#id
.$("#theform").submit(function(event) { event.preventDefault(); // ... });
Вам нужно привязаться к событию формы
submit
или к событию кнопкиclick
и вызватьevent.preventDefault()
, Если вы хотите остановить отправку формы:$('form').bind('submit', function (event) { event.preventDefault(); }); $('form').find(':submit').bind('click', function (event) { event.preventDefault(); });
Я считаю, что событие submit предназначено для элементаform . Для ввода [type= 'button'] можно использовать событие click.
Преимущество обработки обработчика
- Добавьте кавычки вокруг
'add.php'
- измените селектор в первой строке на атрибут
id
формы, содержащейinput#send
.submit()
на форме, а не обработчикаclick
на входе состоит в том, что некоторые формы могут быть представлены нажатием клавиши enter (когда пользователь сосредоточен на одном из полей формы). Если у вас нет атрибутаid
, добавьте его или используйте другой селектор jQuery для назначения тега формы.$("#myform").submit(function(e) { e.preventDefault(); $.ajax({ type: 'POST', url: 'add.php', data: data, success: success, dataType: dataType }); return false; });
Попробуйте использовать return false вместо
$("input#send").submit(function(event) { $.ajax({ type: 'POST', url: add.php, data: data, success: success, dataType: dataType }); return false; });
Если вы используете preventDefault, я предполагаю, что это означает, что вы не хотите отправлять действие по умолчанию. Я бы просто использовал другое событие вместо использования .представить. Для меня это не действие submit, которое вы хотите перехватить, а скорее щелчок, который обычно вызывает submit.
$('#inputSend').on('click', function(event) { event.preventDefault(); //the rest });
Если и
return false
, иevent.stopPropagation()
не работают, попробуйте следующий метод. Использование.on()
сделает функцию submit доступной. Как только вы измените.submit()
на.on("submit"..)
, Вы можете использоватьreturn false
илиe.stopPropagation()
.$(document).on("submit", "input#send", function(event) { event.stopPropagation(); $.ajax({ type: 'POST', url: add.php, data: data, success: success, dataType: dataType }); return false; });