$(document).ready(function() {
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
});
$("input.inputPhone").keyup(function() {
var jThis=$(this);
var notNumber=new RegExp("[^0-9]","g");
var val=jThis.val();
//Math before replacing to prevent losing keyboard selection
if(val.match(notNumber))
{ jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server
Note: これは更新された回答です。以下のコメントは、キーコードを弄った古いバージョンに言及しています;
jQuery
**JSFiddle][1]で試してみてください。
jQueryネイティブの実装はありませんが、以下の
inputFilter
プラグインを使えば、テキスト<input>
の入力値をフィルタリングできます(Copy+Paste、Drag+Drop、キーボードショートカット、コンテキストメニュー操作、入力不可能なキー、キャレット位置、異なるキーボードレイアウト、[IE 9以降のすべてのブラウザ][2]をサポートしています):入力フィルタをインストールするために
inputFilter
プラグインを使用できるようになりました:以下は参考になりそうな入力フィルターの例です:
これが私が使用する関数です。
インライン:
。
。
控えめなスタイル(jQueryを使用):
。
。
単純なJavaScript正規表現を使用して、純粋に数値の文字をテストできます。
これは、入力が数値の場合はtrueを返し、そうでない場合はfalseを返します。
またはイベントキーコードの場合は、以下で簡単に使用してください。
JavaScript関数isNaNを使用します。
更新:。 そして、ここでそれについて話しているがjQueryを使用している素晴らしい記事:[HTMLテキストボックスの入力を数値に復元][2]。
[2]:http://west-wind.com/weblog/posts/1006040.aspx?utm_source = feedburner& utm_medium = feed& utm_campaign = Feed:%20RickStrahl%20%28Rick%20Strahl%27s%20WebLog%29。
これを内部共通jsファイルで使用します。 この動作を必要とするすべての入力にクラスを追加するだけです。
出典:http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
私にとってはもっと簡単です。
なぜそんなに複雑なのか? HTML5パターン属性があるため、jQueryは必要ありません。
クールなのは、モバイルデバイスに数値キーボードを表示することです。これは、jQueryを使用するよりもはるかに優れています。
この非常にシンプルなソリューションを使用して、同じことを行うことができます。
。
。
解決策については、このリンクを参照しました。 それは完全に機能します。!!!
HTML5のパターン属性は、< input>要素の値がチェックされます。
注:pattern属性は、テキスト、検索、URL、tel、電子メール、およびパスワードの入力タイプで機能します。
[0-9]は、任意の正規表現条件に置き換えることができます。
{1,3}は最小1を表し、最大3桁を入力できます。
HTML5 number入力を試すことができます。
非準拠のブラウザーには、ModernizrとWebforms2のフォールバックがあります。
jQuery.validateを使用すると、かなり単純なものになります。
このJavaScript関数を使用することができます:
そして、この関数を次のようにテキストボックスにバインドします:
私は上記を実運用で使っていますが、完璧に動作しますし、クロスブラウザにも対応しています。さらに、jQueryに依存しないので、インラインJavaScriptでテキストボックスにバインドできます:
他のソリューションのようにユーザーがテキストを選択したり、貼り付けをコピーしたりすることを妨げない、非常に優れたシンプルなソリューションを見つけました。 jQueryスタイル:)。
関数は抑制しますNonNumericInput(イベント){。
みんなに役立つと思います。
これが、少し前に作成した簡単なソリューションです。 詳細については、私の記事をご覧ください。
http://ajax911.com/numbers-numeric-field-jquery/。
jQuery UIウィジェットファクトリーを使用する回答を次に示します。 許可されている文字を簡単にカスタマイズできます。
それは数、数記号、ドルの金額を可能にします。
上記の@ user261922の投稿に基づいて私のものを書き、少し変更して、すべて、タブを選択し、同じページで複数の「番号のみ」フィールドを処理できるようにしました。