Ich habe ein Suchfeld oben auf der Seite, das einen Ajax-Anruf durchführt, wenn ein Benutzer die nebenstehende Schaltfläche drückt. Ich versuche, das Eingabe-Tag so zu aktualisieren, dass beim Drücken der Taste 'Enter' das entsprechende JavaScript ohne - Laden der Seite erfolgt. Das Problem ist, dass die Seite ständig neu geladen wird. Hier ist mein letzter Versuch:
$("searchText").bind('keyup', function(event){
if(event.keyCode == 13){
event.preventDefault();
$("#buttonSrch").click();
return false;
}
});
<input type='search' id='searchText' />
<input type='button' id='buttonSrch' onclick="search(document.getElementById('searchText'))" value='Search' />
Binden Sie nicht an input
s; binden an form
. Angenommen, form
hat eine ID von searchForm
:
$("#searchForm").submit(function() {
search($("#searchText").get(0));
return false;
});
Es kann auch mit einfachem JavaScript durchgeführt werden:
document.getElementById('searchForm').addEventListener('submit', function(e) {
search(document.getElementById('searchText'));
e.preventDefault();
}, false);
Es fehlt #
im Selektor. Versuche dies
<input type='text' id='searchText' />
JS
$("#searchText").bind('keyup', function(event){
if(event.keyCode == 13){
event.preventDefault();
//$("#buttonSrch").click();
search(this.value);
}
});
Ich weiß, dass es etwas spät ist, aber ich bin auf das gleiche Problem gestoßen wie Sie. Es funktionierte für mich mit "keypress" anstelle von bind.
$('#searchText').keypress(function (e) {
if (e.which == 13) {
e.preventDefault();
//do something
}
});
Fügen Sie onSubmit="return false;"
zu Ihrem Formular-Tag hinzu
<form onSubmit="return false;">
/* form elements here */
</form>`
$('#seachForm').submit(function(e){
e.preventDefault();
//do something
});
Sie können das Formularaktionsattribut auf Javascript setzen: void (0); Auf diese Weise wird das Formular nicht veröffentlicht/abgerufen, sodass die Seite nicht aktualisiert wird.
$(document).ready(function () {
$('#form1').attr('action', 'javascript:void(0);');
});
Verwenden Sie einfach das "action" -Attribut im <form>
-Tag . So
<form action="#"> // your content </form>
Wird Ihr JS sofort ausgeführt oder ist das Dokument fertig? Wenn es nicht in einem Dokument bereit ist, ist die Schaltfläche zum Zeitpunkt, zu dem Sie versuchen, bind
aufzurufen, nicht vorhanden.
Das ist es, was am Ende für mich gearbeitet hat. Bitte beachten Sie, dass es mein Problem war, das Objekt zu finden, das das Formular gesendet hat:
$('#missingStaff').submit(function (e) {
e.preventDefault();
var comment = $(document.activeElement)[0];
submitComments(comment);
});