无法删除Firefox中的输入

时间:2019-01-13 02:31:20

标签: javascript jquery firefox

我正在使用脚本来格式化文本框的输入。我只想使用字符-. 1次,并且只能在此文本框中添加数字。编辑后,我想将输入舍入到2位小数。

我的输入没有问题。

当我想删除输入时,我遇到了问题。

我无法删除Mozilla Firefox中的输入。我在Google Chrome或Internet Explorer中没有任何问题。

有人知道我该如何解决这个问题?

这是我的剧本:

<input type="text" class="groupOfTexbox" onchange="setTwoNumberDecimal(this)" />

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
  function setTwoNumberDecimal(el) {
    el.value = parseFloat(el.value).toFixed(2);
  };

  $(document).ready(function() {
    $('.groupOfTexbox').keypress(function (event) {
      return isNumber(event, this)
    });
  });

  function isNumber(evt, element) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (
      (charCode != 45 || $(element).val().indexOf('-') != -1) &&
      (charCode != 46 || $(element).val().indexOf('.') != -1) &&
      (charCode < 48 || charCode > 57))
      return false;
    return true;
  }    
</script>

JSFiddle:http://jsfiddle.net/5zduh3a7/1/

1 个答案:

答案 0 :(得分:3)

在您的白名单中包含退格键(代码= 8):

function isNumber(evt, element) {
  var charCode = (evt.which) ? evt.which : event.keyCode
  if ((charCode != 45 || $(element).val().indexOf('-') != -1) &&
    (charCode != 46 || $(element).val().indexOf('.') != -1) &&
    (charCode < 48 || charCode > 57) &&
    (charCode != 8)) {
    return false;
  }
  return true;
}

还请注意,在这种情况下,最好使用keydown / keyup而不是keypress。 IE和Chrome似乎不会为某些特殊键(例如,退格键)触发keypress事件。这就是为什么即使不将退格键代码列入白名单,您的代码也可以在IE和Chrome中运行的原因。