【发布时间】:2015-07-08 10:32:39
【问题描述】:
<div>
<input type="text" class="allownumericwithdecimal"/>saadad
</div>
$(".allownumericwithdecimal").live("keypress keyup ", function (event) {
$(this).val($(this).val().replace(/[^0-9\.]/g, ''));
var text = $(this).val();
if (!((event.which >= 48 && event.which <= 57) || event.which == 8 || event.which == 46 || event.which == 110 || event.which == 0)) {
var text = $(this).val();
if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.'), text.indexOf('.').length).length > 2)) {
//event.preventDefault();
}
}
var text = $(this).val();
if ((event.which >= 48 && event.which <= 57) && (text.indexOf('.') != -1)) {
if ((text.substring(text.indexOf('.'), text.indexOf('.').length).length) > 2) {
//event.preventDefault();
}
if (event.which == 190) {
//event.preventDefault();
}
}
if (text.indexOf('.') != -1 && event.which == 190) {
if (text.match("^[0-9]+(\.[0-9]{0,2})?$")) {} else {
$(this).val('');
}
}
if (text.indexOf('.') == -1 && text.length > 7 && (event.which != 190 && event.which != 8 && event.which != 46 && event.which != 110 && event.which != 0)) {
event.preventDefault();
}
});
问题是,如果我在 textBox 中输入一个值,比如 3434,现在我想通过将光标放在 3 之后并按 5 来使其成为 35434,它在 Firefox 和 IE 中工作正常,但在 chrome 中,5 在值之后添加,它变为 34345。
罪魁祸首是替换非数字字符的行。
如何处理这个问题??
【问题讨论】:
-
有趣,但测试用例不清楚,添加正确的输入值和您想要输出的实际值。
-
每次按下键盘时,它都会用一个新值替换该值。因此,您需要在替换
input元素的值之前进行测试。 -
@S͢kyD͢ream 谢谢,我在过去一小时内参加了会议,问题已经解决。我还需要为未来的搜索者添加正确的输入和期望的输出值吗??
-
@RishiPrakash 不不,我明白了,谢谢好阙。 :)
标签: javascript jquery replace