如何使用javascript将html上的输入限制为带小数的数字?

时间:2016-09-04 13:38:08

标签: javascript html validation

我检查了这个问题here的答案,我找到的最佳答案是这个,因为它不允许在输入字段中输入任何数字

function forceNumeric(){
    var $input = $(this);
    $input.val($input.val().replace(/[^\d]+/g,''));
}
$('body').on('propertychange input', 'input[type="number"]', forceNumeric);

问题是我需要这样的东西,但它适用于带小数的数字。现在这段代码阻止我输入点或逗号,所以我不能输入十进制数。知道如何适应它?

2 个答案:

答案 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);

正则表达式替换将更改点的逗号,并且不允许多个点。