我现在因为两件事而来到这里。
首先
我需要修改jQuery脚本来修复小数点分隔符(点或昏迷)。在我的国家(阿根廷),我们使用昏迷作为小数分隔符,jQuery.validation使用点。 我设法改变了RegEx,现在已经修好了,但我的问题来自另一方。
每当我添加一个View时,它都会引用两个脚本
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
由于我只是直接修改了jquery.validate.js,我怎么能将它重构为min(我不知道它们之间的区别,所以此时稍微用水就会很棒)。 ¿扩展脚本会更好吗?怎么样? (试过这个LenardG's jQuery validate and the comma decimal separator (MVC)但是没有用:()
我也不知道我是否可以像这样一个接一个地改变,它会继续工作。
第二
我需要全局化来自jQuery客户端验证的消息。
例如,当您在数字字段中键入一个字母(比如年龄)时,它会显示一条消息“字段时代必须是一个数字。”...我一直在疯狂地查找整个解决方案,一遍又一遍的消息(恕我直言,魔鬼的工作)。但显然,没有成功。
虽然良好的做法是根据网络浏览器文化选择文化和内容,但我必须做的Web应用程序必须让系统用户成为选择文化的人(可能在登录页面中)或者在用户配置页面中,但这没关系。)
因此,如果用户选择了es-AR文化(来自阿根廷的西班牙语),我想要展示的信息是“El campo edad debe serunnúmero”。如果用户选择了fr-FR文化,那么要显示的消息应该是(感谢Google翻译)“Lechampâgedoitêtreunnombre。”
对不起我的英语,我希望你能理解我的“问题”。 谢谢大家;)
答案 0 :(得分:1)
请在jquery.validate脚本之后添加此代码:
$(document).ready(function () {
$.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);
}
$.validator.methods.date = function (value, element) {
var isValid = true;
if (Object.prototype.toString.call(d) === "[object Date]") {
if ( isNaN( d.getTime() ) ) {
isValid = false;
}
}
else {
isValid = false;
}
return this.optional(element) || isValid;
}
});
这会将日期相应地设置为导航器文化,并使用“,”作为小数分隔符。
问候。
答案 1 :(得分:0)
首先,我相信您只需要包含其中一个验证脚本(如果它们只是常规和缩小)。
创建另一个名为app.domready.js的js文件。这将是您放置常规生产代码的位置。直接编辑插件以进行更新通常也不好。
将所有这些放在app.domready.js中并在您的母版页/视图_Layout.cshtml中引用它。
<script src="@Url.Content("~/Scripts/app.domready.js")"></script>
这将初始化jquery.validate插件。
$(document).ready(
function () {
$('form').validate({
rules: {
firstname: "required",
lastname: "required",
username: {
required: true,
minlength: 2
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
},
email: {
required: true,
email: true
},
topic: {
required: "#newsletter:checked",
minlength: 2
},
agree: "required"
},
messages: {
firstname: "Please enter your firstname",
lastname: "Please enter your lastname",
username: {
required: "Please enter a username",
minlength: "Your username must consist of at least 2 characters"
},
password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long"
},
confirm_password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long",
equalTo: "Please enter the same password as above"
},
email: "Please enter a valid email address",
agree: "Please accept our policy"
}
});
});
您可以根据表单ID /类设置参数。 查看http://jquery.bassistance.de/validate/demo/上的源代码以获取帮助。
min或任何名称中包含.min的jquery插件意味着缩小或压缩以在浏览器解析时保存空白/大小,这意味着用户下载更少,这意味着更快。我们通常在开发中使用未压缩,并在VS2010中使用构建脚本来压缩所有内容。
希望我理解你要做的事情。
答案 2 :(得分:0)
我正在为MVC3编写一个contrib项目,其中包含一种更简单的方法来处理消息的本地化:http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/