событие.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; });