【发布时间】:2019-12-11 10:57:00
【问题描述】:
在尝试对表单进行客户端验证时,我尝试替换特定输入中的所有字符,数字和小数除外。我不关心多个小数点,因为我在字符串上使用 parseFloat。
在进行故障排除时,我在这里遇到了这个问题,其中推荐的答案与我使用的正则表达式模式相同。 Regex to replace everything except numbers and a decimal point
虽然下面的模式可以很好地验证数字,但每次我尝试输入小数时,它都会被所有其他非数字字符删除。
tempVal = parseFloat($(this).val().replace(/[^.0-9]/g, ''));
我希望能够在输入框中同时输入数字和小数,而不会去掉小数。正如我所说,它与上面另一个问题中使用的模式完全相同,但似乎没有得到预期的结果。任何指导表示赞赏。
更新:
虽然这与我在上面提到(并链接到)的另一个问题相似,并且该问题的解决方案似乎与我使用的代码相同,但结果值将只允许数字,但仍然去掉小数。
这里是完整的 JQuery 代码:
$('#input1, #input2').on('keyup', function() {
if (ignoreBackDelete()) {
return;
}
tempVal = parseFloat($(this).val().replace(/[^.0-9]/g, ''));
if (tempVal.length < 1) {
$(this).val('');
} else {
$(this).val(tempVal);
}
});
为了表明 ignoreBackDelete() 函数不是可能的罪魁祸首,这里也是该函数的代码:
function ignoreBackDelete() {
var key = event.keyCode || event.charCode;
if (key == 8 || key == 46) {
return true;
}
return false;
}
我再次检查了我的代码,以确认在 #input1 或 #input2 中输入值时不会触发其他函数。
希望这可以为问题提供更多细节。
【问题讨论】:
-
在控制台
'asasas2a.322'.replace(/[^.0-9]/g, '')中尝试。所有作品 -
上面使用的输入值@SouXin 工作正常。您在代码@Xthralls 中使用了什么输入?
-
@SouXin,我已经更新了原始问题以提供完整的代码。