我有一个名为format()的函数。此函数为我的输入格式化。在谷歌Chrome工作完美,但在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;
此功能可进行3次验证。只接受数字和点,只接受一个点,在输入点后只接受8位小数。
答案 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();
});