【问题标题】:how to validate for money in jquery如何在jquery中验证金钱
【发布时间】:2014-01-09 10:39:13
【问题描述】:

如何在我可以输入的最大金额为 9999.99 的 jquery 中验证金钱 所以我的要求是: 1.它应该只允许数字和一个点 2.最大长度为7(包括点) 3.before dot max length is 4 4.点最大长度为2后

目前我的文本框只允许使用以下代码的数字和一个点

$('#txtpaymentamnt, #txttenderamt').on("keypress", function (e) {
    alert(e.which);
    if (e.which != 8 && e.which != 0 && ((e.which < 48 || e.which > 57) && e.which != 46)) {
        e.preventDefault();
    }

【问题讨论】:

  • 是否需要检查事件的输入值(例如,按钮单击)或防止输入错误数据?
  • 文本框离开事件或防止输入错误数据(但应该弹出一条消息说max amnt is 9999.99)
  • 如果您使用的是 html5,您可以使用 并使用 min 和 max 属性
  • 我正在使用 MVC 并且没有 .only @html.EditorFor
  • 如果你使用 Mvc 为什么不使用 DataAnnotations?

标签: jquery validation


【解决方案1】:

您可以使用正则表达式执行此操作:/^\d{0,4}(\.\d{0,2})?$/

编辑:

这是请求的fiddle

【讨论】:

  • 我更新了正则表达式并添加了一个小提琴。
  • 感谢 Jack Zelig ...它对我有用,但需要更改不接受字母
  • 它尝试匹配零到四位数字,可选的小数点后跟零到两位数字。字母不匹配,将被拒绝。还是你的意思是别的?
  • @DeadPassive 如果输入的第一个字符无效,您提供的 jsfiddle 将 undefined 放在输入框中。我在这个小提琴中修复了它:jsfiddle.net/w0jekdL6
  • 非常棒的例子,正是我需要的。
【解决方案2】:

使用jQuery validation plugin,您可以使用 Jack 的正则表达式(虽然我还没有测试过)设置自己的规则,如下所示:

jQuery.validator.addMethod(
    "money",
    function(value, element) {
        var isValidMoney = /^\d{0,4}(\.\d{0,2})?$/.test(value);
        return this.optional(element) || isValidMoney;
    },
    "Insert "
);

然后您可以使用 validate 方法设置规则:

$("#myForm").validate({
rules: {
    nameOfMyInputField: {
        money: true,
    }
}
});

【讨论】:

  • 我更新了 Jack Zelig 在他的帖子中更新的正则表达式。
【解决方案3】:

如果我是你,我会使用 the isNumeric function in this answer 检查输入是否为数字,然后检查该数字是否适用于你的情况。

要获得“有效号码”(根据您的要求),它必须:

  • 介于 0 和 9999.99 之间(点前最多 4 位数字)。

  • 最多有 2 个十进制数字。一个很好的检查方法是截断第 n 个数字之后的数字(在你的情况下是第二个数字)并将其与原始值进行比较(两个不同的值意味着第二个数字的小数位数比第一个数字多)。使用Math.round(number*100)/100 截断小数点后第二位的所有内容。

我希望这可以帮助您解决问题。

【讨论】:

    【解决方案4】:

    如您所说,如果您使用的是MVCMVC 框架提供了annotations 可以用来达到最佳效果。即使decimal 没有明确的数据注释。

    以下可用于两位小数

    [RegularExpression(@"^\d+.\d{0,2}$")]
    

    你可以使用的范围

    [Range(0, 9999.99)]
    

    所以你的模型字段变成了

    [RegularExpression(@"^\d+.\d{0,2}$")]
    [Range(0, 9999.99)]
    public decimal Money{ get; set; }
    

    希望对你有帮助

    【讨论】:

      【解决方案5】:
      $.validator.addMethod("currency", function (value, element) {   return
      this.optional(element) ||
      /^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/.test(value); }, "Please
      specify a valid amount");
      

      这里是jquery验证函数。

      【讨论】:

      • OP 从未声明他正在使用插件。另外,请将您的代码正确格式化为代码,而不是引用。已编辑。
      猜你喜欢
      • 2011-12-12
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多