preventDefault () beim Schlüsselereignis funktioniert nicht

9

Ich kann preventDefault() nicht zum Arbeiten bringen.

Hier sind einige verschiedene Code-Varianten, die ich ausprobiert habe:

Erstens:

%Vor%

Zweitens:

%Vor%

Drittens:

%Vor%

Nur Alarm funktioniert.
Alles funktioniert auf Opera, aber nicht auf Chrome und IE Außerdem probiert keydown und keypress aus. On keypress script funktioniert nicht. $('#thetext').keydown(function(evt){}); funktioniert das auch nicht.
Hier ist der ganze Code: Ссылка

%Vor%

Ich versuche, einen Text oder ein Symbol anstelle von

einzufügen     
Solo Omsarashvili BBuLLeTT 27.12.2012, 12:55
quelle

4 Antworten

26

Wenn Sie das keyup -Ereignis hören, ist es zu spät, um preventDefault aufzurufen, versuchen Sie stattdessen, keypress oder keydown anzuhören.

%Vor%

Beachten Sie, dass jQuery die Eigenschaft which normalisiert und Browser-übergreifend ist.

Ссылка

    
undefined 27.12.2012 13:03
quelle
5

Es gibt kein Standardverhalten für .keyup() ; Es wird nach dem Tastendruck ausgelöst, wodurch das Standardverhalten ausgelöst wird. Verwenden Sie stattdessen .keydown() or .keypress () '.

Quelle: Ссылка

    
lnrbob 27.12.2012 13:03
quelle
2

Sie verwenden JQuery, das die Unterschiede zwischen den Browsern normalisiert. Sie müssen also nur die Eigenschaft evt.which überprüfen. Siehe die JQuery-Dokumentation: Ссылка

Wie andere schon gesagt haben - keyup ist zu spät, um die Verarbeitung des Schlüssels zu stoppen. Verwenden Sie stattdessen Keydown oder Tastendruck. Ссылка

    
samjudson 27.12.2012 13:04
quelle
0

Siehe Arbeitsbeispiel hier Ссылка

In allen drei Beispielen haben Sie

verwendet %Vor%

Ich würde sagen, verwenden Sie bestimmte Div-ID anstelle von $(document).keyup(function (evt) { });

wie $("#DivIdName").keyup(function (evt) { }); und verwende auch onkeypress streng, denn wenn du onkeyup benutzt es hat bereits seine Standardaufgabe des Druckens oder was auch immer es ist ausgeführt.

    
ameya rote 27.12.2012 13:04
quelle