Javascript 如何停止指数值并进行最大位数验证
我正在尝试输入最大数字16,包括。和十进制数 金额数字的最大值应为13和1“,以及2位小数 例如,5656546355646.00=16个字符 但目前它未验证并显示指数值。 最多13位,只能显示小数点后2位以内的整数,不应显示指数值 这是我的代码 脚本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(
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;});