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

时间:2015-03-12 06:48:13

标签: javascript regex currency

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没关系。消息显示成功

然而

如果我写下如下的值,

1,000,05

10,000,00

错误消息显示无效值

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

由于

2 个答案:

答案 0 :(得分:0)

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

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

另外,使用RegExp文字,这样你就不必逃避反斜杠。并且没有必要在正则表达式中删除逗号。

&#13;
&#13;
$(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);
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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