2016-03-25 3 views
2

Entwickeln einer Web-App mithilfe von JavaScript in einer .cshtml-Webseite, verwende ich eine Funktion, die Benutzereingaben überprüft, um sicherzustellen, dass es eine Zahl oder ein Punkt/Dezimalpunkt vor dem Eingeben in ein Textfeld ist.Zeitraum wird als ASCII-Code 190 identifiziert?

Der ursprüngliche Code (hier :):

function isNumberKey(evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode != 46 && (charCode < 48 || charCode > 57))) { 
     return false; 
    } 

    return true; 
} 

Ich habe alert (charCode);! vor dem wenn und was auftauchte war 190. ASCII 190 ist das YEN-Symbol.

Ich habe den Code bearbeitet, um ASCII 190 zu akzeptieren und meine Periode/Dezimalpunkt wird jetzt angezeigt.

Ich bin neu in der Programmierung/Web-Entwicklung. Warum bin ich auf das Problem gestoßen, das ich begangen habe? Gibt es eine Lösung?

-TC

Antwort

2

Es ist der Unterschied zwischen den Zeichen für die Visualisierung und Tastencodes.

Die meisten Schlüsselcodes sind einem char-Wert zugeordnet, den Sie aus der ASCII-Tabelle kennen.

Aber der Punkt hat zum Beispiel mehrere Positionen auf einer Tastatur. Der Punkt auf dem Nummernblock hat einen anderen Wert als der Punkt im Textraum.

Dies war sehr hilfreich für mich, dies in der Vergangenheit zu verstehen https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode.

+0

auch erwähnenswert die Verwarnungen auf der Seite, die Sie verlinken – CupawnTae

+0

@Patrick Vielen Dank. Das sind jedoch keine guten Nachrichten. Ich habe gerade versucht, mit dem Numpad Einträge zu machen. Ich war nicht überrascht, als es nicht funktionierte =/ Aus, um eine neue Lösung zu programmieren ... – tcox

0

Sobald ich gelernt habe, dass Keycode und ASCII nicht die gleichen sind, fand ich heraus: Keycode ist der Tastaturstandort, ASCII ist die Byte-Tabelle Darstellung. Aber es ist noch tiefer. onkeydown = "isNumberKey()" gibt den Schlüsselcode zurück, onKeyPress = "isNumberKey()" liefert das ASCII, .. zumindest in Chrome und IE und Edge, die in win10 enthalten sind.