Backspace未在mozilla浏览器中清除该字段

时间:2017-11-15 06:03:03

标签: javascript jquery html

我的输入框只允许使用数字。在chrome和firefox中,它只允许使用数字,但不能在mozilla中使用退格键删除数字。



$(document).ready(function () {
$('#price').keypress(function(event) {
		if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
			event.preventDefault();
		}
	});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='price'>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

通常keypress仅检测可打印的密钥,但当前版本的Mozilla也能够检测到退格。请改用keydown事件。

<强>演示

$(document).ready(function() {
  $('#price').keydown(function(event) {
    console.log(event.which);
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
      event.preventDefault();
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='price'>

另一种方法 重要!

使用上述方法,您还必须检查其他特殊键,例如箭头键和删除键,更不用说.是否正确放置且仅一次。

另一种方法可能是从keyup

上的字符串中删除非数字字符

$(document).ready(function() {
  $('#price').keyup(function(event) {
     this.value = this.value.replace( /[^0-9.]/g, "" );
     this.value = this.value.split(".").reduce((a,b,i)=> i > 1 ? a+b : a+"."+b );
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='price'>

答案 1 :(得分:2)

它正在发生,因为你使用了错误的方法来避免退格。有一个退格键8作为键代码,所以你已经避免了这个以防止default.use这个代码。

$(document).ready(function () {
$('#price').keypress(function(event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && event.which != 8) {
            event.preventDefault();
        }
    });
});

答案 2 :(得分:1)

keypress事件在firefox中无效。您可以使用keyupkeydown事件。

$(document).ready(function () {
$('#price').keyup(function(event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && event.which != 8) {
            event.preventDefault();
        }
    });
});