我检查了这个问题here的答案,我找到的最佳答案是这个,因为它不允许在输入字段中输入任何数字
function forceNumeric(){
var $input = $(this);
$input.val($input.val().replace(/[^\d]+/g,''));
}
$('body').on('propertychange input', 'input[type="number"]', forceNumeric);
问题是我需要这样的东西,但它适用于带小数的数字。现在这段代码阻止我输入点或逗号,所以我不能输入十进制数。知道如何适应它?
答案 0 :(得分:1)
调整正则表达式以接受逗号/点:
/[^\d\.,]+/g
您已使用type=number
为您进行验证。为什么你甚至关心与本机浏览器实现完全相同的其他验证?
答案 1 :(得分:0)
我设法通过将输入字段的类型从数字更改为文本并使用此
来使其工作function forceNumericDecimal(){
var $input = $(this);
$input.val($input.val().replace(',', '.'));
$input.val($input.val().replace(/[^\d\.]+/g,''));
$input.val($input.val().replace(/\./, "x"));
$input.val($input.val().replace(/\./g, ""));
$input.val($input.val().replace(/x/, "."));
}
$('body').on('propertychange input', '.numberdecimal', forceNumericDecimal);
正则表达式替换将更改点的逗号,并且不允许多个点。