jQuery - 无法在Firefox中编辑/删除输入值

时间:2015-05-12 12:10:30

标签: javascript jquery

限制用户输入最多两位小数的值,即10.56

<input class="number" type="text" value="" />
<input type="text" value="44" />
$('.number').on('keypress',function (event) {
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
    var input = $(this).val();
    if ((input.indexOf('.') != -1) && (input.substring(input.indexOf('.')).length > 2)) {
        event.preventDefault();
    }
});

fiddle有效。但是,如果用户按delte/tab/backspace,则不会发生任何事情。

如何允许用户edit/delete输入值或使用tab按钮移至下一个输入框?

答案参考:Link

1 个答案:

答案 0 :(得分:1)

您可以转义相关的键盘键。请参阅AutoGenerateColumns,了解转义的密钥。

查看现场演示:

&#13;
&#13;
$('.number').on('keypress',function (event) {

  // Add this condition to escape arrow/tab/delete/... and many others keys
  if(event.which <= 46) {
    return true;
  }

  if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
  var input = $(this).val();
  if ((input.indexOf('.') != -1) && (input.substring(input.indexOf('.')).length > 2)) {
    event.preventDefault();
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="number" type="text" value="" />

<input type="text" value="44" />
&#13;
&#13;
&#13;

更新:

在你的小提琴中添加一个if confition:

var acceptedKeys = [9, 37, 39, 46, 8];
if(acceptedKeys.indexOf(charCode) > -1) {
    return true;
} 

使用此代码,您接受以下密钥:

  • 退格
  • 删除
  • 左箭头
  • 右箭头
  • 标签

Javascript Char Codes