惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
Cloudbric
Cloudbric
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
博客园_首页
The Cloudflare Blog
C
Cisco Blogs
AWS News Blog
AWS News Blog
IT之家
IT之家
Cyberwarzone
Cyberwarzone
罗磊的独立博客
美团技术团队
V
V2EX
Project Zero
Project Zero
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
S
Schneier on Security
P
Privacy International News Feed
V
Visual Studio Blog
量子位
T
Tor Project blog
S
Securelist
腾讯CDC
A
About on SuperTechFans
T
Threat Research - Cisco Blogs
G
GRAHAM CLULEY
B
Blog RSS Feed
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
B
Blog
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
V
Vulnerabilities – Threatpost
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
L
LINUX DO - 热门话题
Recorded Future
Recorded Future

博客园 - 冯岩

RSA算法 Android JAVA C#互通 jquery.autocomplete.js 插件的自定义搜索规则 LINQ TO SQL 动态查询 接受来自服务器的数据连接时发生超时(30000 毫秒)问题原因及解决方法 防止网页被客户端IE缓存 dottext阅读之系统调度分析 Javascript对日期的操作 C#读取被进程占用的文件 SqlServer 无日志文件附加 windows2003远程桌面退出后系统自动注销的解决方法 JS获取触发事件元素的方法 JS处理选取值 Marquee首尾相连不间断移动 开始完全显示 c#将数据导入Excel另类方法 windows Server 2008常见问题及解决方法 .NET 特性Attribute[三] .NET 特性Attribute[二] .NET 特性Attribute[一] [安装程序配置服务器失败]解决SQL Server2000安装失败
ASPX多服务器控件下使用Jquery.validate.js
冯岩 · 2009-07-12 · via 博客园 - 冯岩

      Jquery.validate.js是基于JQuery库的一个前端验证控件,功能很强大,自身集成了大多常用的验证方法。非常方便。如下: 

//验证
$(function() {
   
//文档加载后对表单绑定验证规则。这样当表单submit时,自动进行验证
   $("#aspnetForm").validate({
        rules: {
        
                        txtAge: {
                                                            required: 
true,
                                                            number: 
true,
                                                            min:
18
                                                        },
               },
        messages: {
                                txtAge: {
                                                                   required:
"必须填写",
                                                                   number:
"请输入数字",
                                                                   min:jQuery.format(
"必须年满{0}.")
                                                            },
                }
   
        });
   });   

      其运行的原理是给HTML中的form绑定一些验证方法。在Form提交时自动进行验证,并在验证失败时进行拦截FORM提交。这样的设计思路是正确可行的,可以理解设计人员为何没有将事件以按扭为目标进行绑定。它在关键的地方进行了拦截。这样可以有效的防止多个Submit的情况下。有漏网之鱼!

      但做为ASP.NET的开发人员就头痛了。原因是从控件面板上拖动的按扭,最终在页面上全部转换成了submit。而大多情况下每个Submit的业务规则不同。所以特别需要Jquery.validate能够以特定的submit为目标进行验证绑定。但“不幸”的是,我今天鄱遍了官方API都没有找到相关的直接支持!

      但还是发现有用价值!Jquery.validate提供了方法删除特定验证。这就好办。我们采用目标按扭使FORM绑定验证,然后再在不相关的SUBMIT绑定一个移除验证方法就行。相关代码如下:      

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Decompress.aspx.cs" Inherits="QsqManage.Decompress" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>演示</title>
    
<script language="JavaScript" src="/jslib/jquery-1.3.2.min.js" type="text/javascript"></script>  
<script language="JavaScript" src="/jslib/jPlug/jquery.validate.min.js" type="text/javascript"></script> 
<script type="text/javascript">      
        
//绑定表单验证
        function NeedValidate()
        {
            $(
"#aspnetForm").validate({
                rules: {
                    txtAge: {
                        required:
true,
                        number:
true,
                        min:
18
                    }
                },
                messages:{
                    txtAge: {
                        required:
"必须填写",
                        number:
"请输入数字",
                        min:jQuery.format(
"必须年满{0}.")
                    }
                }
            });
        }
        
//取消表单验证
        function NoValidate()
        {
            $(
"#txtAge").rules("remove");//如果有多个 依次取消            
        }
        
        $(
function() {
            
//给需要验证的控件为表单绑定验证
            $("#Button1").click(function(){            
                NeedValidate();
            });
            
            
//不需要验证的控件 取消验证绑定
            $("#Button2").click(function() {
                NoValidate();
            });
        });
</script>
</head>
<body>
    
<form id="aspnetForm" runat="server">
    
<div>
    
    年龄:
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
        
        
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="需要验证" />        
        
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="无须验证" />
    
    
</div>
    
    
</form>
</body>
</html>

后台很简单,

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(
"验证通过");
        }
protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Write(
"没有经过验证");
        }

这样,点击Button1就会进行验证,而Button2则直接跳过。

如果一个页面有很多其它按扭,可以使用JQUERY强大的选择器进行批量取消验证功能。如下:

$(document).ready(function() {
    
//给需要验证的控件为表单绑定验证
    $("#Button1").click(function() {
        NeedValidate();
    });
//不需要验证的控件 取消验证绑定
    //            $("#Button2").click(function() {
    //                NoValidate();
    //            });
    
    
//批量取消绑定验证 对所有 type=submit 并且 name不为Button1的按扭取消表单验证
    $("input[type='submit'][name!='Button1']").click(function() {
        NoValidate();
    });
});

楚旋博客园