需要防止人们在 step=any 的一组 type=number 输入字段中意外输入 2 个小数位。我尝试了以下无济于事。
$(function(){
$('input[type=number]').keyup(function(){
var newval=$(this).val().split('..').join('.');
$(this).val(newval);
});
});
$(function(){
$('input[type=number]').keyup(function(){
var newval=$(this).val().replace('..','.');
$(this).val(newval);
});
});
$(function(){
$('input[type=number]').keyup(function(){
var newval=$(this).val().replace(/\.\./g,'.');
$(this).val(newval);
});
});
所有这些只是清空值,或者什么都不做,重复的小数点仍然存在。
最佳答案
也许是这样的?使用类型“文本”而不是“数字”
let last = '';
document.getElementById('me').addEventListener('input', (e) => {
const match = e.target.value.match(/[-+]?\d*\.?\d*/);
if (match || e.target.value === '') {
last = match ? match[0] : '';
}
e.target.value = last;
}, false);
<input id="me" type="text" />
在 chrome 58 上似乎对我来说工作正常。不知道是否还有其他边缘情况。
关于javascript删除数字输入中的重复小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854629/