我的输入框只允许使用数字。在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;
答案 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中无效。您可以使用keyup
或keydown
事件。
$(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();
}
});
});