需要防止人们在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);
});
});
所有这些只是将值清空,或者什么也不做,并且重复的小数仍然存在。
答案 0 :(得分:2)
也许这样的事情?使用' text'不是'数字'
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" />
&#13;
在chrome 58上似乎对我有用。不知道是否还有其他边缘情况。
答案 1 :(得分:0)
感谢大家的输入,我最终做的是在keyup上,将attr“type”改为“text”,运行replace(),然后将其改回“number”。