2012-01-26 69 views
0

我现在在这里是因为两件事情。ASP .NET MVC 3:修改验证脚本和全球化消息

第一:

我需要修改一个jQuery脚本来修复小数点分隔符(点或昏迷)。在我的国家(阿根廷),我们使用彗星作为小数点分隔符,jQuery.validation使用点。 我管理自己改变RegEx,现在已经修复,但我的问题来自另一方。

每当我添加视图,它引用了两个脚本

<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,我怎么能refactorize到最小的(我不知道他们之间的差异,所以在这一点上的一点水将是伟大的)。 ¿扩展脚本会更好吗?怎么样? (试过这种LenardG's jQuery validate and the comma decimal separator (MVC)但没有工作:()

我也不知道,如果我可以改变一个被另一个就是这样,它会继续工作

二:

我需要全球化来自jQuery客户端验证的消息

例如,当您在数字字段中输入一个字母(可以说年龄)时,它会显示一条消息,指出“字段时间必须是数字”。我一直在疯狂地寻找整个解决方案,一遍又一遍消息(恕我直言,魔鬼的工作)。但显然,没有成功。

虽然好的做法是根据网络浏览器文化选择文化和东西,但我必须做的网络应用程序必须让系统的用户成为选择文化的人(可能在登录时页面或用户配置页面,但这并不重要)。因此,如果用户选择es-AR文化(来自阿根廷的西班牙文),我想要显示的信息是“El campo edad debe ser unnúmero。”;如果用户选择了fr-FR文化,则显示的信息应该是(感谢谷歌翻译)“Le champâdoitêtreun nomre。”


对不起,我希望你能理解我的“问题”。 感谢的人;)

回答

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中使用构建脚本来压缩所有内容。

希望我明白你想要做什么。

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; 
    } 
}); 

这将相应的日期放入导航器文化中,并使用“,”作为小数点分隔符。

问候。