jQuery предотвратить действие ввода по умолчанию
-
27-10-2019 - |
Вопрос
У меня есть форма Ajax, которую я хотел бы помешать предварительно преформировать действие при подаче, и я пробовал многочисленные методы и ничего не работает. Мой первый метод был:
return false;
А потом я попытался
event.preventDefault();
событие является названием обратного вызова или как вы его называете.
function(event) {
event.preventDefault();
};
Вот HTML, который я сейчас использую:
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
Вот тест JavaScript, который я настроил:
$('.main_search').submit(function(event) {
event.preventDefault(console.log(event)); //Log the event if captured
});
Ни один из методов не работает, но странная часть в том, что они работают на разных вещах, таких как кнопки, но они не работают над этой формой. Я что -то здесь упускаю? Спасибо!
Решение
Чтобы справиться с вашей конкретной проблемой (т.е. вставка динамически сгенерированной формы), использовать $.on()
. Анкет Тебе лучше не использовать document.body
Как родительский наблюдатель (как $.live()
по сути) с $.on()
, поэтому следующее было бы уместным (учитывая вашу фактическую разметку):
<div id="searches">
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
</div>
var $main_search = $('.main_search'),
$searches = $('#searches');
$searches.on('submit', '.main_search', function(event) {
event.preventDefault();
console.log(event); //Log the event if captured
});
setInterval(function(){
$searches.append($main_search.clone());
}, 5000);
Другие советы
Я настроил jsfiddle:
Может ли вы забыли обернуть его в $(document).ready(function() {}
? Если это не решило проблему: поскольку скрипка работает - нам понадобится ваш контекст, чтобы помочь больше.