Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 小数点后允许有2位数字_Javascript_Jquery - Fatal编程技术网

Javascript 小数点后允许有2位数字

Javascript 小数点后允许有2位数字,javascript,jquery,Javascript,Jquery,您好,我正在尝试限制用户在小数点后输入2位数字。下面的功能正在工作,但我无法修改最后两位数字。假设我输入了数字3456.78,我想修改3456.68,这是不允许的 $('.PMT_AMT')。按键(功能(事件){ var$this=$(this); if((event.which!=46 | |$this.val().indexOf('.')!=-1)&& ((event.which57)&& (event.which!=0&&event.which!=8))){ event.preventD

您好,我正在尝试限制用户在小数点后输入2位数字。下面的功能正在工作,但我无法修改最后两位数字。假设我输入了数字3456.78,我想修改3456.68,这是不允许的

$('.PMT_AMT')。按键(功能(事件){
var$this=$(this);
if((event.which!=46 | |$this.val().indexOf('.')!=-1)&&
((event.which<48 | | event.which>57)&&
(event.which!=0&&event.which!=8))){
event.preventDefault();
}
var text=$(this.val();
if((event.which==46)和&(text.indexOf('.')==1)){
setTimeout(函数(){
if($this.val().substring($this.val().indexOf('.')).length>3){
$this.val($this.val().substring(0,$this.val().indexOf('.')+3));
}
}, 1);
}
if((text.indexOf('.')!=-1)&&
(text.substring(text.indexOf('.')).length>2)&&
(event.which!=0&&event.which!=8)&&
($(此[0].selectionStart>=text.length-2)){
event.preventDefault();
}
});

这里有一种可能使用正则表达式。在
按键上保存旧的输入值,如果
按键上的新值无效,则重置为该旧值

您还需要在
keypress
上进行验证,否则,如果用户键入速度非常快,则可能会保存无效值:

const re=/^\d+(\.\d{0,2})?$/;
让奥德瓦尔;
$('.PMT_AMT')。按键(功能(事件){
常量{value}=这个;
如果(重新测试(值))oldVal=值;
});
$('.PMT_AMT').keyup(函数(事件){
const newVal=this.value;
如果(!re.test(newVal))此.value=oldVal;
});

此解决方案创建一个预测,并针对该预测测试正则表达式

$('.PMT_AMT')。按键(功能(事件){
如果(!/^\d*(\.\d{0,2})?$/.test(
this.value.slice(0,this.selectionStart)
+String.fromCharCode(event.which)
+this.value.slice(this.selectionEnd)
))event.preventDefault();
});

为什么要使用jQuery而不仅仅是浏览器功能

<input type="number" step="0.01">


在提交时,浏览器将检查输入字段的提交值是否最多有两位小数。

请创建一个。为什么不使用Regex,为什么使用
设置超时
?天啊,这里肯定有一些奇怪的代码。对于你想要做的事情来说,这个看起来很复杂。正则表达式绝对是最好的选择。一种可能性: