2016-03-25 5 views
2

.cshtml Webページでjavascriptを使用してWebアプリケーションを開発する際に、ユーザー入力をチェックしてテキストボックスに入力する前に、数字またはピリオド/小数点を確認する関数を使用しています。期間がASCIIコード190として識別されていますか?

元のコードは、(ここで見つける:):

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

    return true; 
} 

は私が警告(charCodeは)を加え;! ifの前に、190はポップアップされました。ASCII 190はYENシンボルです。

ASCII 190を受け入れるようにコードを編集し、現在のピリオド/小数点が表示されています。

私はプログラミング/ Web開発には初めてです。なぜ私はその問題に遭遇しましたか?修正はありますか?

-TC

答えて

2

視覚化とキーコードの文字の違いです。

ほとんどのキーコードは、ASCIIテーブルからわかっているchar値にマップされます。

たとえば、ドットはキーボード上に複数の位置を持っています。 数字の上のドットは、テキストスペースのドットとは異なる値を持っています。

これは過去にこれを理解するのに非常に役に立ちましたhttps://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

+0

また、あなたがリンクしているページの廃止予定に関する警告に言及する価値があります。 – CupawnTae

+0

@Patrickありがとうございます。 これは良いニュースではありません。私はちょうどエントリを行うには、数字を使用してみました。私はそれがうまくいかなかった時に驚いていなかった=/ 新しい解決策をコードしていません... – tcox

0

キーコードとASCIIが同じではないことが分かったら、キーコードはキーボードの位置、ASCIIはバイトテーブルの表現です。しかしそれよりもさらに深い。 onkeydown = "isNumberKey()"はキーコードを返します。onKeyPress = "isNumberKey()"はASCIIを返します..少なくともChromeではIEとEdgeはwin10に含まれています。

関連する問題