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

Javascript allow comma and numeric for currency money textbox

本文关键字:货币 文本 数字 许逗号 Javascript      更新时间:2023-09-26

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>

目录:

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

问题:

如果我写如下值,

100,00

100,00 是可以的。消息显示成功

然而

如果我写如下值,

1,000,05
10,000,00

错误消息显示无效值

根据我在 javascript 中的正则表达式,我如何允许 1,000,05 和 10,000,00 个值成功?

谢谢

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

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

此外,请使用正则表达式文本,这样您就不必转义反斜杠。而且没有必要在正则表达式中转义逗号。

$(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+)*$";它适用于任意数量的逗号分隔数字