按键功能

Keypress function

我有一个名为 format() 的函数。此函数对我的输入进行格式化。在 google chrome 中工作完美,但在 firefox 上,当我尝试使用 'backspace' 键删除输入时我遇到了问题。

$('#valueInput').keypress(function(event) {
  let key = event.keyCode || event.which;
  if (((key != 46 || (key == 46 && $(this).val() == '')) ||
      $(this).val().toString().indexOf('.') != -1) &&
    (key < 48 || key > 57) ||
    $(this).val().toString().indexOf('.') != -1 &&
    $(this).val().toString().split('.')[1].length >= 8) {
    event.preventDefault();
  }
}).on('paste', function(event) {
  event.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="valueInput" type="text" />

此函数进行 3 次验证。只接受数字和点,只接受一个点,输入点后只接受8位小数。

在您的代码中添加这一行:

if(key == 32) {
    $(this).val($(this).val().substring(0, $(this).val().length - 1));
}

你的代码会像这样:

    $('#valueInput').keypress(function(event) {
      let key = event.keyCode || event.which;  
      if (((key != 46 || (key == 46 && $(this).val() == '')) ||
      $(this).val().toString().indexOf('.') != -1) &&
      (key < 48 || key > 57) ||
       $(this).val().toString().indexOf('.') != -1 &&
       $(this).val().toString().split('.')[1].length >= 8) {
           if(key == 32) {
               $(this).val($(this).val().substring(0, $(this).val().length - 1));
           }
           event.preventDefault();
  }
}).on('paste', function(event) {
  event.preventDefault();
});