Ris*_*shi 7 javascript jquery replace
<div>
<input type="text" class="allownumericwithdecimal"/>saadad
</div>
Run Code Online (Sandbox Code Playgroud)
$(".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();
}
});
Run Code Online (Sandbox Code Playgroud)
问题是如果我在textBox中输入一个值3434并且现在我想通过将光标放在3之后并按下5来使其成为35434,它在Firefox和IE中工作正常但在chrome中,5在值之后添加并且它变为34345.
罪魁祸首是替换非数字字符的行.
如何处理这个问题?
试试这个code,它运行了。jsFiddle
我只是做一个测试
if ( /[^0-9\.]/g.test($(this).val()) ) {
$(this).val($(this).val().replace(/[^0-9\.]/g,''));
}
Run Code Online (Sandbox Code Playgroud)
解释
您只需确保用户输入您想要的值即可。如果输入的值不是integer. 你的正则表达式的意思是:“那些不是整数或点(.)的,用空值替换它们”。这就是为什么您需要进行此测试。因此,如果用户输入所需的值,它不会执行替换操作,也不会通过测试。