2012-02-17 9 views
1

フォームには、特定の数値入力のみが許可されているテキストボックスがあります。すなわちjavascript/jqueryの入力マスキング

0.5, 1, 1.5, 2, 2.5, 3........ and so on 

これらの入力に対してこのテキストボックスをマスクするにはどうすればよいですか?正規表現を使うべきか?

答えて

1

あなたが唯一の提出に検証したい場合は、単にparseFloatMath.floortoStringを使用することができます。

function isValidValue(text) { 
    return text == (Math.floor(parseFloat(text) * 2)/2).toString(); 
} 

それとも、置き換える文字列に正規表現のチェックを行うことができ、.replace(/[^0-9\.]/g, "")を。これは、数字とピリオド/小数点のみを許可します。 残念ながら、複数の小数点を防ぐことはできません。

実際のキーストロークを制限する場合は、さらに必要なものがあります。テキストボックスのイベントkeyupに次の関数を追加します。 return isValidKey(this, event)の代わりに、単にisValidKey(this, event)を使用してください:

function isValidKey(me, evt) { 

    var charCode = (evt.which) ? evt.which : event.keyCode; 
    var currValue = me.value; 

    // disallow decimal point if it is not the first one 
    if ((charCode == 46 || charCode == 110 || charCode == 190) && currValue.indexOf(".") != -1) 
     return false; 

    // disallow non numeric characters 
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 

    return true; 
} 

http://jsfiddle.net/SHJsz/

更新:それは誰にでも今少し厳しいですが、まだありません。ユーザーがバックスペースまたは削除を使用して元の開始番号を削除する場合は、先行する0の番号を持つことも、小数点で開始することもできます。

http://jsfiddle.net/SHJsz/1/

+0

ありがとう、それは私のために働く.. .. :) –

0

あなたはここに見ることができます:

http://digitalbush.com/projects/masked-input-plugin/

を、それは完全にあなたの問題を解決しない、マスクだけではなく、事前に定義された値を使用できます。あなたのニーズに合わせてプラグインコードを変更することができます。

このコントロールでは、増分/減分の上下の矢印を配置し、フォーカスを失ったときに検証して最も近い半分に値を切り上げるフリーテキストを許可します。私はそれが最も便利だろうと思う。あなたがテキストを入力することを許可しないとき、マスクは迷惑になることがあります。