2017-10-11 8 views
0

このコードはStack Overflowを使用してユーザーがテキストボックスに数値を入力することを制限していますが、ChromeおよびIEでのみ機能します。誰でもこれを行うためのクロスブラウザのコードを知っていますか? 注:既にグローバル属性が追加されていて、それはまったく機能しませんでしたが、これはChromeとIEで完全に機能した唯一の属性でした。JavaScriptコードを使用してユーザーの入力を制限するクロスブラウザコード

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 
+0

コードは次のとおりです: MCDev

+0

Javascriptでこれをやっているようです。コード例プロジェクトでAngularやjQueryのようなJavascriptライブラリを使用していますか?あなたは何のレベルのブラウザサポートを探していますか?これは純粋に表示用か検証用かその両方ですか? –

+0

代わりに 'oninput'を使ってみましたか? –

答えて

1

あなたは文字がonkeyupではなく、挿入されますときですonkeydownをキャッチしたいです。また、代わりに番号を除去する、ちょうど私が推薦するevent.preventDefault()

<p> 
 
    <input type="text" onkeydown="event.key.match(/\d/) && event.preventDefault()" /> 
 
</p>

ことの一つは、HTMLからコードを削除し、そのよう機能でそれを入れていると挿入し得ることから、それを防ぐ必要がありますこのような再利用可能である:

// Wait till the dom is loaded 
 
document.addEventListener('DOMContentLoaded', function(e) { 
 
    // Add the event to each input that has `data-type="number"` 
 
    document.querySelectorAll('[data-type=number]').forEach(function(input) { 
 
    // Add the event to the input 
 
    input.addEventListener('keydown', number) 
 
    }) 
 
}) 
 

 
function number(event) { 
 
    event.key.match(/\d/) && event.preventDefault() 
 
}
<p> 
 
    <input type="text" data-type="number" /> 
 
</p>

+0

JSのためにトランスファーを使用していない場合にリスナーの矢印機能を通常の機能に変更することがありますか? –

+0

querySelectorはIE8/9で動作しますが、矢印機能は使用できません。 –

+0

ええ、私はcaniuse.com上で 'queryselector'を見ました、それはie 8で完全にサポートされていませんでした。しかし、' => 'はサポートされていませんが端でサポートされています –

関連する問題