给表单加上验证
来源:互联网 发布:毛领皮夹克 知乎 编辑:程序博客网 时间:2024/06/05 13:12
如有不明白的地方欢迎加QQ群14670545 探讨
我们在上一节讲了给文本框加上提示效果,这节我们来完善上一节的demo。
加上一些表单项的验证,比如email格式,正整数,不能为空.....,这时候我们需要一个jquery的表单验证插件,可以去官网上下载:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
http://docs.jquery.com/Plugins/Validation
还需要一个扩展插件,以方便我们用中文,不然提示效果都是英文的。所以配合一个messages_cn.js:
/* * Translated default messages for the jQuery validation plugin. * Locale: CN */jQuery.extend(jQuery.validator.messages, { required: "<font style=\"color:#f00; margin-left:5px;\">不能为空</font>", remote: "<font style=\"color:#f00;\">请修正该字段</font>", email: "<font style=\"color:#f00;\">电子邮件格式有误</font>", url: "<font style=\"color:#f00;\">请输入合法的网址</font>", date: "<font style=\"color:#f00;\">请输入合法的日期</font>", dateISO: "<font style=\"color:#f00;\">请输入合法的日期 (ISO)</font>", number: "<font style=\"color:#f00;\">请输入合法的数字</font>", digits: "<font style=\"color:#f00;\">只能输入整数</font>", creditcard: "<font style=\"color:#f00;\">请输入合法的信用卡号</font>", equalTo: "<font style=\"color:#f00;\">请再次输入相同的值</font>", accept: "<font style=\"color:#f00;\">请输入拥有合法后缀名的字符串</font>", maxlength: jQuery.validator.format("<font style=\"color:#f00;\">长度最多 {0} 个字符</font>"), minlength: jQuery.validator.format("<font style=\"color:#f00;\">长度最少 {0} 个字符</font>"), rangelength: jQuery.validator.format("<font style=\"color:#f00;\">长度要在 {0} 和 {1} 之间</font>"), range: jQuery.validator.format("<font style=\"color:#f00;\">请输入一个介于 {0} 和 {1} 之间的值</font>"), max: jQuery.validator.format("<font style=\"color:#f00;\">请输入一个最大为 {0} 的值</font>"), min: jQuery.validator.format("<font style=\"color:#f00;\">请输入一个最小为 {0} 的值</font>")});这里只是随便百度找的,好像有个更好的插件叫formValidator,有兴趣的在看完这一节可以去找下,然后配合练习下咯
考虑到我们的表单有很多种情况,所有验证的那个属性参数必然是个枚举。好的,现在我们把昨天的那个自定义放服务器控件重新修改一下。
新建一个枚举类ControlMenu.cs:
namespace CustomerWebControls{ /// <summary> /// 文本框样式类型 /// </summary> public enum InputClassType { /// <summary> /// 文本框 /// </summary> input, /// <summary> /// //文本域 /// </summary> textarea } /// <summary> /// 验证类型 /// </summary> public enum ValidataType { /// <summary> /// 不能为空 /// </summary> required, /// <summary> /// 请修正该字段 /// </summary> remote, /// <summary> /// 电子邮件格式有误 /// </summary> email, /// <summary> /// 请输入合法的网址 /// </summary> url, /// <summary> /// 请输入合法的日期 /// </summary> date, /// <summary> /// 请输入合法的日期 (ISO) /// </summary> dateISO, /// <summary> /// 请输入合法的数字 /// </summary> number, /// <summary> /// 只能输入整数 /// </summary> digits, /// <summary> /// 请输入合法的信用卡号 /// </summary> creditcard, /// <summary> /// 请再次输入相同的值 /// </summary> equalTo, /// <summary> /// 请输入拥有合法后缀名的字符串 /// </summary> accept }}
然后我们来修改CCTextBox.cs:
using System;using System.ComponentModel;using System.Web.UI;using System.Web.UI.WebControls;namespace CustomerWebControls{ [DefaultProperty("IsValidata"), ToolboxData("<{0}:CCTextBox runat=server />")] public class CCTextBox : TextBox, ICustomControl { /// <summary> /// 是否验证输入的合法性 /// </summary> [Bindable(true), Category("Appearance"), DefaultValue(true), Localizable(true)] public bool IsValidata { get { return ViewState["IsValidata"] != null ? (bool)ViewState["IsValidata"] : false; } set { ViewState["IsValidata"] = value; } } /// <summary> /// 检测类型 /// </summary> [Bindable(true), Category("Appearance"), DefaultValue(null), Localizable(true)] public ValidataType ValidataType { set { ViewState["ValidataType"] = value; } get { return ViewState["ValidataType"] != null ? (ValidataType)ViewState["ValidataType"] : ValidataType.required; } } /// <summary> /// 文本框的样式 /// </summary> [Bindable(true), Category("Appearance"), DefaultValue(InputClassType.input), Localizable(true)] public InputClassType InputMolde { set { ViewState["InputMolde"] = value; } get { return ViewState["InputMolde"] != null ? (InputClassType)ViewState["InputMolde"] : InputClassType.input; } } protected override void OnPreRender(EventArgs e) { CssClass = InputMolde + (IsValidata == true ? " required " + ValidataType.ToString() : ""); base.OnPreRender(e); } protected override void Render(HtmlTextWriter writer) { base.Render(writer); } }}
生成一下,然后引用一下,拖一个CCTextBox到页面上去,然后我们添加下IsValidata和ValidataType属性,页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ccPage.aspx.cs" Inherits="MyWebSiteTest.Manager.ccPage" %><%@ Register Assembly="CustomerWebControls" Namespace="CustomerWebControls" TagPrefix="cc1" %><!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 src="../Js/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="../Js/formvalidator4.1.3/jquery.validate.min.js" type="text/javascript"></script> <script src="../Js/formvalidator4.1.3/messages_cn.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(".input,.textarea").focus(function () { $(this).addClass("focus"); }).blur(function () { $(this).removeClass("focus"); }); //输入框提示,获取拥有HintTitle,HintInfo属性的对象 $("[HintTitle],[HintInfo]").focus(function (event) { $("*").stop(); //停止所有正在运行的动画 $("#HintMsg").remove(); //先清除,防止重复出错 var HintHtml = "<ul id=\"HintMsg\"><li class=\"HintTop\"></li><li class=\"HintInfo\"><b>" + $(this).attr("HintTitle") + "</b>" + $(this).attr("HintInfo") + "</li><li class=\"HintFooter\"></li></ul>"; //设置显示的内容 var offset = $(this).offset(); //取得事件对象的位置 $("body").append(HintHtml); //添加节点 $("#HintMsg").fadeTo(0, 0.85); //对象的透明度 var HintHeight = $("#HintMsg").height(); //取得容器高度 $("#HintMsg").css({ "top": offset.top - HintHeight + "px", "left": offset.left + "px" }).fadeIn(500); }).blur(function (event) { $("#HintMsg").remove(); //删除UL }); }); $(document).ready(function () { $("#form1").validate(); }); </script> <link href="images/example.css" rel="stylesheet" type="text/css" /></head><body> <form id="form1" runat="server"> <div style=" margin:0 auto; width:600px;"> <div style=" height:100px;"></div> <cc1:CCTextBox ID="CCTextBox1" runat="server" Width="200" IsValidata="true" ValidataType="email" HintTitle="提示" HintInfo="这是提示的内容你懂的" ></cc1:CCTextBox><br /><br /> <asp:Button runat="server" ID="btnSubmit" Text="提交" CssClass="submit" /> </div> </form></body></html>
如果不指定ValidataType属性,那么默认是不能为空的验证(当然,前提是IsValidata属性必须是true,否则不进行验证),OK,来测试下效果:
- 给表单加上验证
- 【夏苗苗】给你的表单加上验证
- 给domino应用加上验证码功能
- Spring Cloud (18) | 给Eureka Server加上安全验证
- 给ASP.Net表单增加验证码
- 给ASP.Net表单增加验证码
- 给ASP.Net表单增加验证码
- js通用验证,给表单添加属性!
- [图文教程] 给留言互动模块中的内容表单加上富文本编辑器
- 给图片加上水印
- 给图片加上水印
- 给工具栏加上背景图片
- 给xml加上头
- 给Listview加上进度条
- 给菜单加上图片
- 给figure加上title
- 给UIView加上背景图
- 给图片加上倒影
- Linux下的DNS简单配置
- c# win2008 下 word转html 问题解决
- Android Camera系统深入理解
- HDOJ 【C】1.1.8 A+B for Input-Output Practice (VIII)
- Windows的一些窗口消息
- 给表单加上验证
- 为什么要漂在北京呢?
- oracle中rowid和rownum的区别
- ArcGIS For JavaScript API Toggle multiple ArcGIS Online services(切换多个ArcGIS Online服务)————(十五)
- The Anatomy of a Large-Scale Hypertextual Web Search Engine
- Computer Science Conference Rankings
- string和String 的对比
- JS中style.display和style.visibility的区别
- hadoop乱码