JQuery verhindern Eingabetastaktionen
-
27-10-2019 - |
Frage
Ich habe ein AJAX -Formular, das ich verhindern möchte, eine Aktion vorzubauen, wenn ich eingereicht habe, und habe zahlreiche Methoden ausprobiert und nichts funktioniert. Meine erste Methode war:
return false;
Und dann habe ich es versucht
event.preventDefault();
Ereignis ist der Rückrufname oder wie auch immer Sie ihn nennen.
function(event) {
event.preventDefault();
};
Hier ist die HTML, die ich gerade benutze:
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
Hier ist der Test JavaScript, den ich eingerichtet habe:
$('.main_search').submit(function(event) {
event.preventDefault(console.log(event)); //Log the event if captured
});
Keine Methode funktioniert, aber der seltsame Teil ist, dass sie an verschiedenen Dingen wie Schaltflächen arbeiten, aber nicht an dieser einen Formular funktioniert. Vermisse ich hier etwas? Vielen Dank!
Lösung
Um mit Ihrem spezifischen Problem umzugehen (dh,, dynamisch erzeugte Form einfügen), verwenden $.on()
. Sie sind besser dran, nicht zu benutzen document.body
als Elternbeobachter (als $.live()
im Wesentlichen) mit $.on()
, Das Folgende wäre also angemessen (berücksichtigt Ihr tatsächliches 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);
Andere Tipps
Ich habe eine JSFIDDLE eingerichtet:
Könnte es sein, dass Sie vergessen haben, es zu wickeln $(document).ready(function() {}
? Wenn dies das Problem nicht gelöst hätte: Da die Geige funktioniert, würden wir Ihren Kontext benötigen, um mehr zu helfen.