只允许2个小数点输入到使用JavaScript或jQuery的文本框?

问题描述:

我为我的文本框调用了一个名为test的类。当我输入第一个值时第一个值为4.,然后突然输出为4.00。我只想限制输入两位小数。只允许2个小数点输入到使用JavaScript或jQuery的文本框?

$(".test").keyup(function (event) { 
    debugger; 
    this.value = parseFloat(this.value).toFixed(2); 
}); 

什么是这样的:

$(".test").keyup(function (event) { 
if ((pointPos = this.value.indexOf('.')) >= 0) 
    $(this).attr("maxLength", pointPos+3); 
else 
    $(this).removeAttr("maxLength"); 
}); 

Here is工作提琴。

+0

我喜欢你的工作。我遇到了问题,当我达到2小数'23.45',再次我不能插入小数点前像234.45。它甚至在删除小数点之前的数字 –

+0

@Aioros:Hai代码正在工作。但有一个问题是在输入数字后删除按钮不起作用。你知道原因吗? – user2156088

你可以使用的最大长度属性,尝试

$(".test").keyup(function (event) { 
     var last = $(this).val()[$(this).val().length - 1]; 
     if (last == '.') { 
      $(".test").attr("maxlength", $(this).val().length+2); 
     } 
    }); 

这个小改变了代码就足够了:

this.value = this.value.replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2'); 

本质更换小数点之后通过任何数量的数字小数点和前两位数字。或者如果输入非数字,则将其删除。

+0

它允许字符。可以发布只允许固定小数位的数字的代码。谢谢。 –

在提交表单之前,您不应该担心用户在输入内容。那时你真的不在乎那里有什么。但是,如果要警告输入无效,则可以在检测到不合格输入时在屏幕上显示一条消息,例如,

<script> 

function validate(element) { 
    var re = /^\s*\d*\.?\d{0,2}\s*$/; 
    var errMsg = "Number must have a maximum of 2 decimal places"; 
    var errNode = document.getElementById(element.name + '-error') 
    if (errNode) { 
    errNode.innerHTML = re.test(element.value)? '' : errMsg; 
    } 
} 

</script>  

你或许应该也提上了更改处理的监听器也以考虑通过其他方式到达那里值。

$(document).on("keyup", ".ctc", function() 
{ 

    if (!this.value.match(/^\s*\d*\.?\d{0,2}\s*$/) && this.value != "") { 
     this.value = ""; 
     this.focus(); 
     alert("Please Enter only alphabets in text"); 
    } 
});