Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 使用jQuery验证货币字段的客户端验证_Asp.net Mvc 3_Jquery Validate_Currency - Fatal编程技术网

Asp.net mvc 3 使用jQuery验证货币字段的客户端验证

Asp.net mvc 3 使用jQuery验证货币字段的客户端验证,asp.net-mvc-3,jquery-validate,currency,Asp.net Mvc 3,Jquery Validate,Currency,我在asp.net mvc 3应用程序上使用jquery.validate时遇到问题 至少在西班牙,我们用“,”从小数中分割出一个数字。好的,使用服务器端验证,如果我放置如下内容: 12.55当服务器验证它时,它表示该值无效。如果我输入:12,55,它就行了 到目前为止还不错,但是如果我使用jqueryvalidate,它会说12,55是无效的,12.55是有效的。因此,客户机通过了验证,但服务器没有通过,或者客户机没有通过验证,但服务器会通过 所以。。。我可以为这种验证更改区域设置吗 多谢各位

我在asp.net mvc 3应用程序上使用jquery.validate时遇到问题

至少在西班牙,我们用“,”从小数中分割出一个数字。好的,使用服务器端验证,如果我放置如下内容:

12.55当服务器验证它时,它表示该值无效。如果我输入:12,55,它就行了

到目前为止还不错,但是如果我使用jqueryvalidate,它会说12,55是无效的,12.55是有效的。因此,客户机通过了验证,但服务器没有通过,或者客户机没有通过验证,但服务器会通过

所以。。。我可以为这种验证更改区域设置吗

多谢各位


PS:服务器如何知道我要使用“,”而不是“,”进行验证?我不记得我是否在某个地方指定了它。

您可以尝试将web应用程序配置为使用客户端web浏览器的区域设置:

<system.web>
    <globalization requestEncoding="utf-8" 
                   responseEncoding="utf-8"
                   culture="auto" 
                   uiCulture="auto" />
    ...
</system.web>

...

这将使用浏览器区域性进行服务器端验证。就客户端验证而言,它已经使用了浏览器区域性。这样可以确保两者匹配。

您可以尝试将web应用程序配置为使用客户端web浏览器的语言环境:

<system.web>
    <globalization requestEncoding="utf-8" 
                   responseEncoding="utf-8"
                   culture="auto" 
                   uiCulture="auto" />
    ...
</system.web>

...

这将使用浏览器区域性进行服务器端验证。就客户端验证而言,它已经使用了浏览器区域性。因此,这可以确保两者匹配。

您可能应该包括本地化文件:

在德国,数字使用相同的规则,因此您可以使用
方法\u de.js
或仅包括

jQuery.extend(jQuery.validator.methods, {
    number: function(value, element) {
        return this.optional(element) ||
               /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
    }
});
Microsoft CDN托管的1.6版文件列表。版本1.7已经发布


更新:请参阅演示。

可能您应该包括本地化文件:

在德国,数字使用相同的规则,因此您可以使用
方法\u de.js
或仅包括

jQuery.extend(jQuery.validator.methods, {
    number: function(value, element) {
        return this.optional(element) ||
               /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
    }
});
Microsoft CDN托管的1.6版文件列表。版本1.7已经发布


更新:见演示。

不适合我。通过谷歌搜索,我发现一些人正在使用某种jquery.glob.js,其他人正在禁用不引人注目的javascript。我尝试过全球化,但对我不起作用。谢谢,不是为我工作。通过谷歌搜索,我发现一些人正在使用某种jquery.glob.js,其他人正在禁用不引人注目的javascript。我尝试过全球化,但对我不起作用。谢谢。我试过使用方法,但是像“40,5”这样的数字低于(0.01),所以范围规则启动。我不知道为什么它认为这是在下面。好吧,这是一个进步。@Jesus Rodriguez:为了帮助你,我准备了演示。这就是你想要的吗?@Jesus Rodriguez:如果你在服务器上设置了规则(比如范围),你应该检查它在客户端上的外观以找出问题所在,但我认为在服务器上你应该将范围等放在US格式。哦,似乎范围属性不喜欢那个regexp,但是没有它,它工作得很好,谢谢。我试过使用方法,但是像“40,5”这样的数字低于(0.01),所以范围规则启动。我不知道为什么它认为这是在下面。好吧,这是一个进步。@Jesus Rodriguez:为了帮助你,我准备了演示。这就是你想要的吗?@Jesus Rodriguez:如果你在服务器上设置了规则(比如范围),你应该检查它在客户端上的外观以找出问题,但我认为在服务器上你应该将范围等放在US格式。哦,似乎范围属性不喜欢那个regexp,但是没有它,它工作得很好,谢谢。