我正在使用脚本来格式化文本框的输入。我只想使用字符-
和.
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/
答案 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中运行的原因。