Javascript 使用jQuery将输入字段限制为两位小数
我有一个要限制的输入字段,这样用户只能输入一个最大为两位小数的数字。我们希望使用jQuery来实现这一点 我可以用jQuerytoFixed()函数吗 塔克斯Javascript 使用jQuery将输入字段限制为两位小数,javascript,jquery,Javascript,Jquery,我有一个要限制的输入字段,这样用户只能输入一个最大为两位小数的数字。我们希望使用jQuery来实现这一点 我可以用jQuerytoFixed()函数吗 塔克斯 $('input#decimal').blur(函数(){ var num=parseFloat($(this.val()); var cleanNum=num.toFixed(2); $(this).val(cleanNum); if(num/cleanNum123.67 如果要避免近似值,请检查此答案 下面的函数将根据您对小数位数的
$('input#decimal').blur(函数(){
var num=parseFloat($(this.val());
var cleanNum=num.toFixed(2);
$(this).val(cleanNum);
if(num/cleanNum<1){
$(“#错误”).text('请只输入两位小数,我们已截断了多余的点');
}
});
这是一把小提琴
使用toFixed
无论如何都会导致近似值123.6666->123.67
如果要避免近似值,请检查此答案
下面的函数将根据您对小数位数的需要限制小数,并限制多个点
功能检查\u数字(e、obj、intsize、deczize){
var键码;
如果(window.event)keycode=window.event.keycode;
else如果(e){keycode=e.which;}
else{return true;}
var fieldval=(对象值),
点=字段值拆分(“.”长度;
如果(键代码==46){
返回点=32&&keycode=58&&keycode=deczize&&keycode!=8&&keycode!=0)
返回false;
}else if(fieldval.length>=intsize&&keycode!=46){
返回false;
}否则{
返回true;
}
}
}
HTML5解决方案:
<input type="number" step="0.01" />
注意:此方法不会尝试自动截断数字,但如果用户输入的小数位数超过两位,则输入将无效,因此不会提交表单:
对所有符号尝试以下操作: inputField.value.replace(/(\…)(.)/,“$1”)强> 或者,对于数字: inputField.value.replace(/(\[0-9][0-9])([0-9])/,“$1”)强> 我在这里找到了这个方法:
使用正则表达式的替代方法:
$('#id').on('input', function () {
this.value = this.value.match(/^\d+\.?\d{0,2}/);
});
可以用css选择器替换id选择器。
<input type="text" id="decCheck" onkeyup="decimalCheck();"/>
<script>
function decimalCheck(){
var dec = document.getElementById('decCheck').value;
if(dec.includes(".")){
var res = dec.substring(dec.indexOf(".")+1);
var kl = res.split("");
if(kl.length > 1){
document.getElementById('decCheck').value=(parseInt(dec * 100) /
100).toFixed(2);
}
}
}
</script>
函数小数检查(){
var dec=document.getElementById('deCheck')。值;
如果(12月包括(“.”){
var res=十二月子串(十二月指数(“.”+1);
var kl=被拆分的资产(“”);
如果(kl.长度>1){
document.getElementById('decCheck')。值=(parseInt(dec*100)/
100)toFixed(2);
}
}
}
一种类似的解决方案,在达到小数点后2位以上时会使用退格键
函数limitDec(id){
//查找元素
var金额=$(“#testdec”)
//手柄键控
金额开(“键控”,函数(){
如果(isNaN(amt.val()){
金额val(0);
}
如果(amt.val().indexOf(“.”)>-1&&(amt.val().split('.')[1]。长度>2)){
amt.val(amt.val().substring(0,amt.val().length-1));
}
})
}
为什么要使用jQuery?您可以在html中使用“maxlenght=2”执行相同的操作。。。接下来,如果您想确保用户只能插入小数,您可以使事件“onkeypress”上调用的函数听起来像是要验证货币字段。也许这会有所帮助:这似乎只是检查值的长度,而不是值中的小数位数。与@PhilDD相同,这是遗漏的一个”)“这是最好的!是的,这确实是最好的答案。还有一件事,我发现表达式this.value=this.value.toFixed(2)
不起作用,因为它假定输入总是一个浮点
input:invalid { box-shadow: 0 0 1.5px 1px red; }
$('#id').on('input', function () {
this.value = this.value.match(/^\d+\.?\d{0,2}/);
});
<input type="text" id="decCheck" onkeyup="decimalCheck();"/>
<script>
function decimalCheck(){
var dec = document.getElementById('decCheck').value;
if(dec.includes(".")){
var res = dec.substring(dec.indexOf(".")+1);
var kl = res.split("");
if(kl.length > 1){
document.getElementById('decCheck').value=(parseInt(dec * 100) /
100).toFixed(2);
}
}
}
</script>