javascript删除数字输入中的重复小数点

时间:2017-06-30 20:48:41

标签: javascript regex replace

需要防止人们在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);
    });
});

所有这些只是将值清空,或者什么也不做,并且重复的小数仍然存在。

https://jsfiddle.net/uLayjmkv/

2 个答案:

答案 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;
&#13;
&#13;

在chrome 58上似乎对我有用。不知道是否还有其他边缘情况。

答案 1 :(得分:0)

感谢大家的输入,我最终做的是在keyup上,将attr“type”改为“text”,运行replace(),然后将其改回“number”。