jQuery impedisci l'azione predefinita input
-
27-10-2019 - |
Domanda
Ho una forma AJAX che vorrei impedire di preformare un'azione quando sono stato inviato e ho provato numerosi metodi e nulla funziona. Il mio primo metodo è stato:
return false;
E poi ho provato
event.preventDefault();
L'evento è il nome di callback o come lo chiami.
function(event) {
event.preventDefault();
};
Ecco l'HTML che sto usando in questo momento:
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
Ecco il test javascript che ho impostato:
$('.main_search').submit(function(event) {
event.preventDefault(console.log(event)); //Log the event if captured
});
Nessuno dei due metodi funziona, ma la parte strana è che funzionano su cose diverse come i pulsanti ma non funzionano su questa forma. Mi manca qualcosa qui? Grazie!
Soluzione
Per affrontare il tuo problema specifico (cioè, inserire una forma generata dinamicamente), uso $.on()
. È meglio non usare document.body
come osservatore madre (come $.live()
essenzialmente lo fa) con $.on()
, quindi quanto segue sarebbe appropriato (considerando il tuo effettivo markup):
<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);
Altri suggerimenti
Ho impostato un jsfiddle:
Potresti essere dimenticato di avvolgerlo $(document).ready(function() {}
? Se questo non ha risolto il problema: poiché il violino funziona, avremmo bisogno del tuo contesto per aiutarti di più.