2017-02-13 5 views
0

最大桁数は16を含めて入力しようとしています。小数点以下の桁数は です。金額は最大13で、1つは "。"例えば、2つの小数の 。 5656546355646.00 = 16文字指数値を停止して最大桁数の検証を行う方法

現在のところ、その検証は行われておらず、指数関数的に表示されています。最大 13桁が、唯一小数点以下2桁件まで全体の数字を表示しなければならない、と指数値を表示すべきではありませんここに

私のコード スクリプトがある

function getKeyValue(keyCode) { 
    if(keyCode > 57) { //also check for numpad keys 
     keyCode -= 48; 
    } 
    if(keyCode >= 48 && keyCode <= 57) { 
     return String.fromCharCode(keyCode); 
    } 
} 

function formatNumber(input) { 
    if(isNaN(parseFloat(input))) { 
     return "0.00"; 
    } 
    var num = parseFloat(input); 
    return (num/100).toFixed(2); 
} 

$(".amountInput").keydown(function(e) {  
       //handle backspace key 

       var input = $(this).attr("data-actual-input"); 
       if(e.keyCode == 8 && input.length > 0) { 
        input = input.slice(0,input.length-1); //remove last digit 
        $(this).attr("data-actual-input", input); 
        $(this).val(formatNumber(input)); 
       } 
       else { 
        var key = getKeyValue(e.keyCode); 
        if(key) { 
         input += key; //add actual digit to the input string 
         $(this).attr("data-actual-input", input); 
         $(this).val(formatNumber(input)); //format input string and set the input box value to it 
        } 
       } 
       if(e.which == 8 || e.which == 46) { 
        return true; 
       } 
       var inpVal = $(this).val(); 
       if(inpVal.length > 15) { 
       e.preventDefault(); 
       return false; 
       } 
       return false; 
      }); 

htmlコード

<input type='tel' class="form-control amountInput" name="amt" data-actual-input="" value="0.00" required> 

jsfiddle

https://jsfiddle.net/Lpn1w84f/1/

答えて

0

あなたがmaxLengthの属性を試してみましたか?あなたの例から:

<input type='tel' class="form-control amountInput" name="amt" data-actual-input="" value="0.00" maxlength="15" required> 
+0

それは問題がKeyDownイベント()関数であり、jsfiddleにしてみてください.... – Aryan

+0

maxLengthの作品、動作しません。これを見るには、この関数を無効にしてください(例えばtrueを返します)。 $( "。amountInput")。keydown(function(e){ trueを返します; }); –

関連する問題