Keress功能

时间:2018-05-30 18:44:21

标签: javascript jquery cross-browser compatibility

我有一个名为format()的函数。此函数为我的输入格式化。在谷歌C​​hrome工作完美,但在Firefox上我有一个问题,当我尝试使用'退格'键擦除输入。



$('#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();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="valueInput" type="text" />
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分:0)

在您的代码中添加以下行:

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();
});