现在的位置: 首页 > 综合 > 正文

DNN中使用jQuery Validation时常见问题及解决方法(jQuery Validation with DNN Tips)

2014年06月15日 ⁄ 综合 ⁄ 共 1434字 ⁄ 字号 评论关闭

本文将浅谈一下在开发DNN模块结合jQuery Validation开发前端验证代码时遇到的常见问题以及我的处理方法,希望对DNN有兴趣的童鞋有些许的帮助。

1、由于开发DNN模块是用的还是ASP.NET WebForm 的开发方式但是jQuery官网以及最近的相关博客中提到的都是与ASP.NET MVC结合使用的例子。jQuery Validation与ASP.NET WebForm混用最大的困难在于jQuery Validation是依赖于DOM Element的name属性的,但是对于ASP.NET Web Form来说被页面渲染后的服务器端空间的id,name都是动态的。即使到了ASP.NET给服务端控件指定为Static模式,最终控件的ID和设计时一样的,但是name还是跟原来一样是一串以$分割的长标识。因此ASP.NET
WebForm中不能以官方的如下这种方式使用,

$(".selector").validate({
    rules: {
        name: "required",
        email: {
            required: true,
            email: true
        }
    },
    messages: {
        name: "Please specify your name",
        email: {
            required: "We need your email address to contact you",
            email: "Your email address must be in the format of name@domain.com"
        }
    }
});

那我们该如何解决这个问题呢,细读jQuery Validation的源代码后发现:其实我们完全可以怎对每一个元素逐一的进行处理。具体操作请参见如下示例代码,

            $("#"+"<%= txtWidth.ClientID %>").rules("add",{
                required:true,
                digits:true,
                messages:{
                    required:'高度必填',
                    digits:'invalid input'
                }
            });

 

 

2、本地化默认错误信息动态加载的方法

<script type="text/javascript" src ="http://jzaefferer.github.io/jquery-validation/localization/messages_<%= Local.getDefault().getLanguage() %>.js"/>

 

3、点击Form中的LinkButton不触发验证的问题

$("#yourlinkid").click(function(){
     return $('form').valid();
}

 

4、DNN中如果在ascx或者aspx页面中定制化包含中文的错误信息时界面出现乱码的问题
打开web.config文件找到类似如下内容

<globalization culture="en-US" uiCulture="en" requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8" />

将fileEncoding="UTF-8"替换成GB2312即能解决问题

<globalization culture="en-US" uiCulture="en" requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="GB2312" />

 

参考:

http://jqueryvalidation.org/

 

 

抱歉!评论已关闭.