2016-09-04 5 views
-2

は、私はこの質問hereへの回答をチェックし、私が見つけた最良の答えは、それが入力フィールドjavascriptを使用してhtmlの入力を小数点以下の数値に制限するにはどうすればよいですか?

function forceNumeric(){ 
    var $input = $(this); 
    $input.val($input.val().replace(/[^\d]+/g,'')); 
} 
$('body').on('propertychange input', 'input[type="number"]', forceNumeric); 

事に数字以外のものを入力することはできませんので、この1だった私はこのようなものが必要ということです小数点以下の数値に対しては機能します。今ではこのコードはドットやコンマを入力できないようにしているので、小数点を入力することはできません。それをどのように適応させるのか?

+0

文字クラスに '/ [^ \ d。] +/g'を追加するだけです。 – hindmost

+1

シンプルで'/[^ \ d、。] +/g'を使用してください。将来の使用のために行います。ルックアップ正規表現/正規表現とそれを使用する方法についてのドキュメントを見つけるでしょう。 https://en.wikipedia.org/wiki/Regular_expression – NewToJS

+0

簡単な答えは、あなたはできません。あなたの正規表現を使用していても、 '.'を正規表現に追加すると、' 12.3.45'は数字ではないので、入力を検証する必要があります。よく形成された '数値 '入力ボックスを使い、他の何百万ものプログラム/サイト/スクリプトのようなあなたの入力を検証してください。 – Claies

答えて

0

は、私はそれがテキストに番号からの入力フィールドの種類を変更し、ドットのカンマを変更します。この

function forceNumericDecimal(){ 
    var $input = $(this); 
    $input.val($input.val().replace(',', '.')); 
    $input.val($input.val().replace(/[^\d\.]+/g,'')); 
    $input.val($input.val().replace(/\./, "x")); 
    $input.val($input.val().replace(/\./g, "")); 
    $input.val($input.val().replace(/x/, ".")); 
} 

$('body').on('propertychange input', '.numberdecimal', forceNumericDecimal); 

正規表現置換を使用して動作させるために管理し、複数のドットを許可しません。 。

+0

これは「JavaScript」ソリューションではなく、jQueryイベントに依存するソリューションであることに注意してください。 – Claies

1
  • はコンマ/ドットを受け入れるように正規表現を調整する:あなたはすでにあなたのための検証を行いtype=numberを使用している

    /[^\d\.,]+/g

  • 。なぜネイティブブラウザの実装とまったく同じことを行う追加の検証についても気にしますか?

+0

type = numberだけを使用すると、ユーザーが入力フィールドにテキストを入力できるようになり、その後テキストの入力を完全にブロックしたいときに検証が行われるためです。 – Atirag

+0

この場合、入力から「非数値」文字を置き換える以外の場合があります。例えば。 '' 1.000.1''は有効な数字ではありませんが、単純な正規表現では許可されます。 – mdziekon

+0

あなたはそれをどうやって知っていますか? – Atirag

関連する問題