Frage

Ich bin mit jQuery und wollen es ermöglichen, dass der Benutzer nach drücken Sie die Eingabetaste Daten in ein Suchfeld eingeben um die Suche zu starten.

Ich verwende den folgenden Code ein:

        $('#textSearch').keyup(function (event) {
            if (event.keyCode == '13') {
                doSearch();
            }
            return false;
        });

Es funktioniert perfekt in Firefox und IE, aber nicht in Safari. Was passiert, ist, dass das Formular abgeschickt wird, wenn ich in Safari drücken Sie die Eingabetaste, und das ist nicht das, was ich will.

Hinzufügen onsubmit = "return false;" auf die Form Werke ist aber keine Option, da der Formular-Tag auf einem Masterpage einer asp.net Seite ist und ich brauche das Formular auf anderen Seiten eingereicht werden.

Gibt es eine Möglichkeit, um diese Funktion auch bekommt in Safari zu arbeiten?

EDIT: Ich habe auch versucht, nur eine Warnung zeigen anstelle der doSearch () Funktion. Die Benachrichtigung zeigt sich gut, aber danach das Formular abgeschickt wird.

War es hilfreich?

Lösung

Browser kann variieren, zu dem Ereignisauslöser ein vorlegen. In diesem Fall Safari auf dem keydown Ereignisse vorlegen.
Sie könnten für den Fall einreichen beobachten, ohne das Markup zu ändern und abbrechen:

$('#the-id-of-the-form').submit( function( e ) {
    e.preventDefault();
});

Sie können dann für die keyup Ereignis hören und zu handhaben, wie Sie es jetzt tun.

Andere Tipps

Versuchen Sie diese:

    $('#textSearch').keyup(function (event) {
        var key = event.keyCode || event.which;

        if (key === 13) {
            doSearch();
        }
        return false;
    });

hinzufügen verhindern deault

$('#textSearch').keyup(function (event) {
    if (event.keyCode == '13') {
        event.preventDefault();
        doSearch();
    }
    return false;
});

Ich verwende „keydown“, weil „keyup“ nicht für mich arbeiten. Ich muß auch für diese Eingabe mit Eingabefeldern deaktiviert sein, dass ich mit AJAX bin hinzufügen, damit die „live“.

Sie müssen eine „Änderung“ Handler auf das Feld binden. Diese Version verlässt das Feld ( „Blur“) löst dann eine Änderung auf dem Feld, dann die Änderung abfeuert. Ohne die Unschärfe wird die Änderung ausgelöst zweimal!

 $('#textSearch').live('keydown', function(event) {
  if(event.keyCode == 13)
  {
  $(event.target).blur();
  $(event.target).change();
  event.preventDefault();
  return false;
  }
 }
);

Ich verwende „keydown“, weil „keyup“ nicht für mich arbeiten. Ich muß auch für diese Eingabe mit Eingabefeldern deaktiviert sein, dass ich mit AJAX bin hinzufügen, damit die „live“.

Sie müssen eine „Änderung“ Handler auf das Feld binden. Diese Version verlässt das Feld ( „Blur“) löst dann eine Änderung auf dem Feld, dann die Änderung abfeuert. Ohne die Unschärfe wird die Änderung ausgelöst zweimal!

    $('#textSearch').live('keydown', function(event) {
  if(event.keyCode == 13)
  {
  $(event.target).blur();
  $(event.target).change();
  event.preventDefault();
  return false;
  }
 });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top