【问题标题】:Jquery Validation + Globalization + applied to all numeric fields instead of just the ones that is requiredJquery Validation + Globalization + 适用于所有数字字段,而不仅仅是所需的字段
【发布时间】:2012-12-27 19:04:25
【问题描述】:

我正在尝试在 asp .net mvc3 中为印度构建一个应用程序。我使用 jQuery 全球化来验证印度格式的数字。

我的代码如下:

<script src="@Url.Content("~/Scripts/jquery.globalize/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.hi-IN.js")" type="text/javascript"></script>
<script type="text/javascript">
    $.validator.methods.number = function (value, element) {
        return !isNaN(Globalize.parseFloat(value));
    }

    $(document).ready(function () {
        Globalize.culture('hi-IN');
    });
</script>

这是基于以下 SO 问题:

MVC 3 jQuery Validation/globalizing of number/decimal field

完美运行。但是,由于这段代码,有 2 个新错误:

1) 我有两个输入字段 Area 和 SuperBuiltUpArea - Area 是必填字段,SuperBuiltUpArea 不是。 jQuery 验证不允许我提交表单,因为它不接受 SuperBuiltUpArea 字段的 null(empty) 条目并抛出该字段应该是数字的错误。

编辑:此问题已通过将验证器语句替换为

来解决
this.optional(element) || !isNaN(Globalize.parseFloat(value));

2) 如果我在这些字段中输入字母,jQuery 验证不会启动。但是,它不允许我提交表格。但这很令人困惑,因为表单没有显示错误但不会提交。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 好的,我已经能够通过添加 this.optional(element) || 来解决第一个问题!isNaN(Globalize.parseFloat(value));给验证者

标签: jquery jquery-validate numbers globalization


【解决方案1】:

我总结了你在编辑评论中所说的内容。

只需替换:

<script type="text/javascript">
    $.validator.methods.number = function (value, element) {
        return !isNaN(Globalize.parseFloat(value));
    }
</script>

<script type="text/javascript">
    $.validator.methods.number = function (value, element) {
        return this.optional(element) || !isNaN(Globalize.parseFloat(value));
    };
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多