Javascript 将文本输入限制为四分之一十进制增量
我试图找到一种方法,将文本输入限制为数字和四分之一十进制增量。例如,0.25、.5、2.75、4.0、10.5等。基本上是一个整数0-9,然后是十进制0、.25、.5、.75。我试着把它建立在Javascript 将文本输入限制为四分之一十进制增量,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我试图找到一种方法,将文本输入限制为数字和四分之一十进制增量。例如,0.25、.5、2.75、4.0、10.5等。基本上是一个整数0-9,然后是十进制0、.25、.5、.75。我试着把它建立在 <script> jQuery('.numbersOnly').keyup(function () { this.value = this.value.replace(/[^0-9\.]/g,''); }); </script> jQuery('.numbersOnly
<script>
jQuery('.numbersOnly').keyup(function () {
this.value = this.value.replace(/[^0-9\.]/g,'');
});
</script>
jQuery('.numbersOnly').keyup(函数(){
this.value=this.value.replace(/[^0-9\.]/g');
});
这将输入限制为十进制数,但无法真正理解如何限制为如上所示的四分之一十进制增量。有什么想法吗
e.KeyCode==8
取消对退格的更改function decimalPlaces(num) {
var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
if (!match) { return 0; }
return Math.max(
0,
// Number of digits right of decimal point.
(match[1] ? match[1].length : 0)
// Adjust for scientific notation.
- (match[2] ? +match[2] : 0));
}
jQuery('.numbersOnly').keyup(function (e) {
this.value = this.value.replace(/[^0-9\.]/g,'');
if(e.keyCode == 8 || decimalPlaces(this.value) < 2){
return true;
}
else if(this.value % 1 != 0)
this.value = (Math.round(this.value * 4) / 4).toFixed(2);
});
jQuery('.numbersOnly').on('blur',function () {
if(this.value % 1 != 0)
this.value = (Math.round(this.value * 4) / 4).toFixed(2);
});
函数小数位数(num){
变量匹配=(''+num).match(/(?:\。(\d+))(?:[eE]([+-]?\d+)))$/;
如果(!match){返回0;}
返回Math.max(
0,
//小数点右边的位数。
(匹配[1]?匹配[1]。长度:0)
//调整为科学记数法。
-(匹配[2]?+匹配[2]:0));
}
jQuery('.numbersOnly').keyup(函数(e){
this.value=this.value.replace(/[^0-9\.]/g');
如果(e.keyCode==8 | |小数点位(此值)<2){
返回true;
}
else if(this.value%1!=0)
this.value=(Math.round(this.value*4)/4.toFixed(2);
});
jQuery('.numbersOnly')。on('blur',function(){
如果(此值%1!=0)
this.value=(Math.round(this.value*4)/4.toFixed(2);
});
这可以通过html元素的
步骤属性来完成,而不需要任何其他javascript
<input step="0.25" type="number"/>
这是一个有效的例子。如果他们键入的数字不是.25的倍数,它应该怎么做?如果你想键入1.25
,你必须先键入1.2
,这不是一个倍数,因此你不能在他们键入时阻止它。你需要支持哪些浏览器?如果你键入1.25
并想将其更改为1.5
,你不能,因为每次删除5
,它都会将其放回去。谢谢,这对我来说是非常有用的。在可能的情况下手动输入,用户仍然可以将values@user2181397该字段仍然无效,不允许用户提交表单。如果用户可以在字段中键入无效值,这又有什么关系呢?