带正则表达式的文本框控件:
JS代码:
function checkNoZeroInteger(textbox, valType) {
if (valType == "正整数") {
var reg = /^\+?[1-9][0-9]*$/; //验证非零整数的正则表达式
if (!reg.exec(textbox.value)) {//验证不通过
alert("不是正确非零正整数!"); //输出提示
textbox.value = ""; //清空输入框
}
}
else if (valType == "大写字母") {
var reg = /^[A-Z]+$/; //验证大写字母的正则表达式
if (!reg.exec(textbox.value)) {//验证不通过
alert("只能是大写字母!"); //输出提示
textbox.value = ""; //清空输入框
}
}
else if (valType == "小写字母") {
var reg = /^[a-z]+$/; //验证大写字母的正则表达式
if (!reg.exec(textbox.value)) {//验证不通过
alert("只能是小写字母!"); //输出提示
textbox.value = ""; //清空输入框
}
}
}
将JS文件的 生成操作属性改成 嵌入的资源
C#代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
[assembly: WebResource("CustomerTextControl.js.Validate.js", "text/javascript")]
namespace CustomerTextControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:TextBoxs runat=server></{0}:TextBoxs>")]
public class TextBoxs:TextBox
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
[Description("带正则表达式的Text文本框")]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
private ValidateType _vt;
/// <summary>
/// 类型属性
/// </summary>
public ValidateType Vt
{
get { return _vt; }
set { _vt = value; }
}
/// <summary>
/// 类型
/// </summary>
public enum ValidateType
{
正整数=1, 大写字母=2, 小写字母=3
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);//保留父类的方法功能
Page.ClientScript.RegisterClientScriptResource(this.GetType(), "CustomerTextControl.js.Validate.js");
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);//输出文本框
if (this.Vt==ValidateType.正整数)
{
writer.Write("元");
}
else if(this.Vt==ValidateType.大写字母)
{
writer.Write("大写");
}
else if (this.Vt == ValidateType.小写字母)
{
writer.Write("小写");
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);//保留父类的属性
if (this.Vt==ValidateType.正整数||this.Vt==ValidateType.小写字母||this.Vt==ValidateType.大写字母)
{
//添加属性
writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "checkNoZeroInteger(this,'"+this.Vt+"')");
}
}
}
}
定义元数据文件写法:
JS文件:
[assembly: WebResource("CustomerTextControl.js.Validate.js", "text/javascript")]
图片文件:
[assembly: WebResource("CustomerTextControl.image.button.jpg","img/gif")]
CSS文件:
[assembly: WebResource("CustomerTextControl.css.Stylesheet.css","text/css")]
ASP代码:
<body>
<form id="form1" runat="server">
<div>
<cc1:TextBoxs ID="TextBoxs1" runat="server" Vt="正整数" οnchange="checkNoZeroInteger(this,'正整数')"></cc1:TextBoxs>
<cc1:TextBoxs ID="TextBoxs2" runat="server" Vt="大写字母" οnchange="checkNoZeroInteger(this,'大写字母')"></cc1:TextBoxs>
<cc1:TextBoxs ID="TextBoxs3" runat="server" Vt="小写字母" οnchange="checkNoZeroInteger(this,'小写字母')"></cc1:TextBoxs>
</div>
</form>
</body>