Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery将输入字段限制为两位小数_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery将输入字段限制为两位小数

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 如果要避免近似值,请检查此答案 下面的函数将根据您对小数位数的

我有一个要限制的输入字段,这样用户只能输入一个最大为两位小数的数字。我们希望使用jQuery来实现这一点

我可以用jQuerytoFixed()函数吗

塔克斯

$('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>