2017-12-23 8 views
-3

できる値 123456789が許可されていません 99.99 12345678.12小数は小数点

後8より大きく、2よりも大きくなる前に、桁数ながらユーザーを制限 - > 9番目の文字場合、ユーザーを制限する必要がありますそれは10進数でなければならない数字です。

+0

えっ...何?再び来る、許可された値の – user3532232

+0

リストのようなものです:不可 20.00 10203040.50 値: 102030405.00 VARのx = number.value.split(」。 ")// [" 102030405 "、" 00 "] x [0]は常に最大8桁でなければなりません。ユーザーが8桁の数字の後に任意の数字を入力しようとすると、 8桁の後にユーザーが小数点のみを入力できる場合は、小数点以下2桁を入力できます(これはオプションです) –

答えて

0

この機能を使用してみてください:

function isValidNumber(num) { 
    if (!parseInt(num) || (num.toString().length >= 9 && (num.toString().indexOf('.') == -1 || num.toString().indexOf('.') >= 9))) { 
     return false; 
    } 
    return !(num.toString().indexOf('.') >= 9); 
} 
0

あなたは文字のユーザーと数に言及し、私はあなたがそれぞれのキー押下後に、この入力をフィルタリングするために探していると仮定します。組み込みのHTML5数値入力属性を使用できますが、それらはonchangeでテストされます。つまり、onblurまでテストされません。

以下の解決策はoninputイベントに関連しているため、各キーを押すたびにトリガーされます。 minとmaxをテストし、値を文字列に変換して、小数点以下の桁数が多すぎないかどうかをテストします。もしあなたがそれをトリミングすることができますが、私はちょうどそれを丸めた。

var decimalInput = document.getElementById('decimal-input'); 
 

 
decimalInput.oninput = function() { 
 
    let decimalValue = decimalInput.value; 
 

 
    if (decimalValue < 0.01) { 
 
    decimalValue = 0.01; 
 
    } 
 

 
    if (decimalValue > 99999999.99) { 
 
    decimalValue = 99999999.99; 
 
    } 
 

 
    let decimalString = decimalValue + '', 
 
    decimalPos = decimalString.lastIndexOf('.'); 
 
    console.log(decimalPos); 
 

 
    if (decimalPos != -1 && decimalString.length - decimalPos > 2) { 
 
    decimalValue = Number(decimalValue).toFixed(2); 
 
    } 
 

 
    decimalInput.value = decimalValue; 
 
}
<input type="number" max="99999999.99" min="0.01" step="0.01" name="decimal-input" id="decimal-input" />

関連する問題