Javascript 货币文本框允许使用逗号和数字

Javascript allow comma and numeric for currency money textbox

JS:

<script>
    $(document).ready(function () {

        $("#Salary").keyup(function (e) {
            var isFloatNumber = IsFloatOnly('input#Salary');
            if (!isFloatNumber) {
                e.preventDefault();
                $("#ErrorMessage").text('Invalid value. Please enter numeric value.');
            }
            else {
                $("#ErrorMessage").text('Success.');
            }
        });
    });

    function IsFloatOnly(element) {
        var value = $(element).val();
        var regExp = "^\d+(\,\d+)?$";
        return value.match(regExp);
    }
</script>

Html:

<input type="Text" id="Salary" maxlength="20" name="Salary" />
<label id="ErrorMessage"></label>

问题:

如果我写值如下,

100,00

100,00 是 okay.Message 显示 成功

然而

如果我写值如下,

1,000,05

10,000,00

显示错误消息无效值

根据我在 javascript ?

谢谢

您的正则表达式只允许一个逗号。 ? 量词表示零个或一个前面的元素。如果您想允许任意数量的它们,请使用 *.

var regExp = /^\d+(,\d+)*$/;

此外,使用 RegExp 文字,这样您就不必转义反斜杠。并且不需要在正则表达式中转义逗号。

$(document).ready(function() {

  $("#Salary").keyup(function(e) {
    var isFloatNumber = IsFloatOnly('input#Salary');
    if (!isFloatNumber) {
      e.preventDefault();
      $("#ErrorMessage").text('Invalid value. Please enter numeric value.');
    } else {
      $("#ErrorMessage").text('Success.');
    }
  });
});

function IsFloatOnly(element) {
  var value = $(element).val();
  var regExp = /^\d+(,\d+)*$/;
  return value.match(regExp);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="Text" id="Salary" maxlength="20" name="Salary" />
<label id="ErrorMessage"></label>

将正则表达式更改为 var regExp = "^\d+(\,\d+)*$"; 它适用于任意数量的逗号分隔数字