我嘗試使用jQuery全球化插件來修復jquery無阻礙客戶端驗證的逗號問題。不過,我嘗試了很多很多解決方案,但沒有解決這個問題的好方法。我在非英語的本地化計算機上,這對我的客戶輸入小數值(如「123,66」而非「123.66」)很重要。 ASP.NET驗證告訴我,價格必須是一個數字!呃?你是認真的嗎 ?大聲笑無法讓jQuery全球化工作
我得到這個JavaScript錯誤,當我嘗試修復。
$.global is undefined
這裏我的代碼。
Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/cultures/globalize.cultures.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.form.js")"type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/glob.fix.js")" type="text/javascript"></script>
</head>
<body>
@RenderBody()
</body>
</html>
glob.fix.js
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}
$.validator.methods.number = function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}
我不明白..它應該工作,因爲我加入~/Scripts/globalize.js
。
有什麼想法?或者你可能有更好的解決方案讓客戶端驗證工作,並讓我輸入逗號作爲十進制值?
謝謝你的範圍驗證代碼! – 2012-05-31 08:28:45