wake-up-neo.net

Stoppen Sie das erneute Laden der Seite mit 'Enter Key'

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' />
33
John R

Binden Sie nicht an inputs; binden an form. Angenommen, form hat eine ID von searchForm:

$("#searchForm").submit(function() {
    search($("#searchText").get(0));
    return false;
});

Versuch es.

Es kann auch mit einfachem JavaScript durchgeführt werden:

document.getElementById('searchForm').addEventListener('submit', function(e) {
    search(document.getElementById('searchText'));
    e.preventDefault();
}, false);
24
icktoofay

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);
  }
});
15
ShankarSangoli

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   
       }
});
11
opp

Fügen Sie onSubmit="return false;" zu Ihrem Formular-Tag hinzu

<form onSubmit="return false;">
/* form elements here */
</form>`
6
vijayscode
 $('#seachForm').submit(function(e){
      e.preventDefault();
      //do something
 });
5
Fresheyeball

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);');
});
3
LeeF

Verwenden Sie einfach das "action" -Attribut im <form>-Tag . So

<form action="#">   // your content     </form>
1
ViPuL5

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.

0
Davy8

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);

});

0
Kremena Lalova