1

入力テキストに「1」を入力しないようにする次のjquery関数があります。

<input id="myId" style="width:50%;" value="0" type="text">​

$("#myId").keypress(function(e) {
   var x=e.charCode;
   if (x == '49'){
       e.preventDefault();
   }
});​

これはjsfiddleです

IE8では動作していません。私のエラーはどこにありますか?前もって感謝します!

JavaScriptバージョンを編集する

<input id="myId" style="width:50%;" value="0" type="text"  onkeypress="javascript:checkNumber(event);"/>

function checkNumber(event) {
var x=e.which;
if (x == 49){
    event.preventDefault();
}
}
4

3 に答える 3

3

charCodeクロスブラウザではないため、jQuerywhichプロパティを使用できます。

event.whichプロパティは正規化さevent.keyCodeれますevent.charCodeevent.whichキーボードのキー入力に注意することをお勧めします。

var x = e.which;

jQueryを使用しない場合は、次のようにコーディングできます。

var x = e.charCode || e.keyCode;
于 2012-11-21T14:25:46.267 に答える
0

同様の質問に対するこの回答を参照してください。keydownの代わりにkeypressとのkeyCode代わりに試してくださいcharCode:

$("#myId").keydown(function(e) {
   var x=e.keyCode;
   if (x == '49'){
      e.preventDefault();
   }
});​

キープレスのjQueryドキュメントには、代わりに使用するいくつかの正当な理由がリストされています。そのkeydownうちの少なくとも1つは、プレスアンドホールドに対して1回だけ起動し、キープレスはキーではなく文字を報告することです(これは、capslockなどを扱うときに問題になります) .)

于 2012-11-21T14:26:18.343 に答える
0

はすべてのブラウザでサポートされているわけではないe.whichため、代わりに使用してください。e.charCode

また、.keyup()代わりにイベントを使用することを検討することもできます.keypress()

于 2012-11-21T14:26:21.480 に答える