Javascript 如何停止指数值并进行最大位数验证

Javascript 如何停止指数值并进行最大位数验证,javascript,jquery,Javascript,Jquery,我正在尝试输入最大数字16,包括。和十进制数 金额数字的最大值应为13和1“,以及2位小数 例如,5656546355646.00=16个字符 但目前它未验证并显示指数值。 最多13位,只能显示小数点后2位以内的整数,不应显示指数值 这是我的代码 脚本 function getKeyValue(keyCode) { if(keyCode > 57) { //also check for numpad keys keyCode -= 48; } if(

我正在尝试输入最大数字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;
            });
函数getKeyValue(keyCode){
如果(keyCode>57){//也检查numpad键
keyCode-=48;
}
if(键码>=48&&keyCode 0){
input=input.slice(0,input.length-1);//删除最后一个数字
$(this).attr(“数据实际输入”,输入);
$(this).val(formatNumber(输入));
}
否则{
var key=getKeyValue(如keyCode);
如果(关键){
input+=key;//将实际数字添加到输入字符串中
$(this).attr(“数据实际输入”,输入);
$(this).val(formatNumber(input));//格式化输入字符串并将输入框值设置为它
}
}
如果(e.which==8 | | e.which==46){
返回true;
}
var inpVal=$(this.val();
如果(输入值长度>15){
e、 预防默认值();
返回false;
}
返回false;
});
html代码

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

jsfiddle


您是否尝试过maxLength属性?从你的例子来看:

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

maxLength起作用,问题在于keydown()函数。要看到这一点,只需禁用此函数(例如返回true)$(“.amountInput”).keydown(函数(e){return true;});