DooIT@江西搜才网

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  51 随笔 :: 17 文章 :: 1136 评论 :: 28 引用
解放程序员的输入(I)发布后,有些同学提出需要后台验证,因为I是前台js编写,对于所有web程序员都可以使用,后台验证必须使用后台语言,为此,编写了这个asp.net的控件,包括前台和后台验证.

用法也很简单,只需要给需要验证的控件加上1-3个属性,他们分别是
usage:内置格式,如:usage="int"表示只能输入整数,usage="^int"表示可以是整数或者为空
exp:用来判断的正则表达式
tip:不符合条件的数据时弹出的提示


有usage时忽略exp属性,在.net里也可以用如:txt.Attributes.Add("usage","int");形式给控件加属性. 

asp.net控件+演示 V0.24源码下载

前台验证演示:



V0.20
  • js路径改用httphandle来指定,并且让checkform.js打包到dll中
  • 修复了不能为空的正则表达式的一个bug
V0.21
  • 多FORM验证
  • 暴露非提交按钮的提交接口(g_check.checkForm(form))
  • LinkButton的提交BUG
V0.22
  •  修改了控件的部署方式,使用httphandle部署,在web.config的system.web节里加入
<httpHandlers>
<add verb="*" path="checkform.ashx" type="AOA.checkformHandle,checkform" />
</httpHandlers>
  • 增加Firefox下对keycheck支持(如:usage="int"时,只允许输入数字)
V0.23(2006-3-26)
  • 增加System.Web.UI.HtmlControls中控件的后台验证
  • 修改前台的check属性,使前台不设置check属性,只需要设置控件的CausesValidation属性即可,即保持前后台同步
  • 增加全部显示报警时的序号
V0.24(2006-8-4)
  • 增加固定格式或允许为空的验证,在原支持的几个格式面前再上"^"前缀即可,详细见示例
欢迎访问江西搜才网
0
0
(请您对文章做出评价)
« 上一篇:解放web程序员的输入验证
» 下一篇:关于控件开发的几点意见
posted on 2005-05-01 00:48 ttyp 阅读(8762) 评论(133)  编辑 收藏 网摘 所属分类: ASP.NET

评论

#25楼[楼主] 2005-09-23 14:46 ttyp      
主要是双引号的问题,双引号不能括一个双引号
  回复  引用  查看    

#26楼[楼主] 2005-09-23 14:49 ttyp      
exp="[^\.\,\'\:\;\&quot;\%\$\|\\\/]"
  回复  引用  查看    

#27楼 2005-09-23 15:06 pwqzc[未注册用户]
真的麻烦你了,他感谢拉,请再指教个问题吧
我写了个函数
判断是不是相同的密码
<script language=javascript>
function CheckTong()
{
var a1 = document.getElementById("txtUserPass");
var a2 = document.getElementById("txtUserPass2");
if(a2.value!=a1.value)
{
document.Form1.submit = false;
}
}
</script>

在后台vpage _Load里
this.btnRegist.Attributes["onclick"] = "javascript:CheckTong();";
怎么一单脊按钮就说什么帐号不对
如果去了这行就一切正常啊

  回复  引用    

#28楼 2005-09-23 15:39 pwqzc[未注册用户]
我尝试这样写
<form id="Form1" method="post" runat="server" onsubmit="return CheckTong();">
<script language=javascript>
function CheckTong()
{
var a1 = document.getElementById("txtUserPass");
var a2 = document.getElementById("txtUserPass2");
if(a2.value!=a1.value)
{
return false;
}
else
return true;
}
</script>

也出现错误拉
天啊
我怎么这样麻烦啊?

  回复  引用    

#29楼 2005-09-23 15:52 pwqzc[未注册用户]
谢谢,我终于搞好拉
usage="document.getElementById('txtUserPass').value==document.getElementById('txtUserPass2').value"

  回复  引用    

#30楼[楼主] 2005-09-23 15:55 ttyp      
不知道你用没用这个控件?

只需要在
<asp:textbox id="txtUserPass2" runat=server usage="checkTong()" tip="密码不一致">

就可以了

  回复  引用  查看    

#31楼[楼主] 2005-09-23 15:56 ttyp      
你那样也可以,简单的用表达式,复杂的用函数
  回复  引用  查看    

#32楼 2005-09-23 15:58 pwqzc[未注册用户]
当一切正常了
当所有的输入都合法后
点按钮竟然出现错误提示:
正在分析“^([a-z]|\_)(\d|[a-z]|\-|\_|\=|\+)+”- 无法识别的转义序列 \_。参数名: ^([a-z]|\_)(\d|[a-z]|\-|\_|\=|\+)+
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentException: 正在分析“^([a-z]|\_)(\d|[a-z]|\-|\_|\=|\+)+”- 无法识别的转义序列 \_。参数名: ^([a-z]|\_)(\d|[a-z]|\-|\_|\=|\+)+

  回复  引用    

#33楼 2005-09-23 16:07 pwqzc[未注册用户]
所有代码如下:
<table style="BORDER-COLLAPSE: collapse" borderColor="#1776c6" height="110" cellSpacing="0"
cellPadding="0" width="100%" align="center" border="1">
<TR>
<td align="right" width="20%">帐号:</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<asp:textbox id="txtUserName" runat="server" CssClass="input" tip="帐号格式不对!" exp="^([a-z]|\_)(\d|[a-z]|\-|\_|\=|\+)+"></asp:textbox>&nbsp;<font color="red">*</font>&nbsp;
<asp:button id="btnCheck" runat="server" Text="检测帐号" check="false" CausesValidation="False"></asp:button>&nbsp;<font color="silver">不能够是中文和特殊字符!</font></td>
</TR>
<TR>
<td align="right" width="20%">呢称:</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<asp:textbox id="txtLove" runat="server" CssClass="input" tip="包含非法字符!" exp="[^\.\,\'\:\;\&quot;\%\$\|\\\/]"></asp:textbox>&nbsp;<FONT color="red">*</FONT>&nbsp;</td>
</TR>
<TR>
<td align="right" width="20%">密码:</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<asp:textbox id="txtUserPass" runat="server" CssClass="input" tip="密码不能为空!" usage="notempty"
TextMode="Password"></asp:textbox>&nbsp;<font color="red">*</font>&nbsp;</td>
</TR>
<TR>
<td align="right" width="20%">确认密码:</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<asp:textbox id="txtUserPass2" runat="server" CssClass="input" tip="密码两次输入不同!" usage="document.getElementById('txtUserPass').value==document.getElementById('txtUserPass2').value"
TextMode="Password"></asp:textbox>&nbsp;<font color="red">*</font>&nbsp;</td>
</TR>
<TR>
<td align="center" colSpan="2"><asp:button id="btnRegist" runat="server" Text="注册"></asp:button>&nbsp;&nbsp;&nbsp;&nbsp;[忘记密码?]&nbsp;&nbsp;&nbsp;<cc1:checkform id="Checkform1" runat="server" Path=" " ShowWay="Alert" ShowStyle="One"></cc1:checkform></td>
</TR>
</table>

  回复  引用    

#34楼 2005-09-23 16:13 pwqzc[未注册用户]
晕死
原来所有的输入框都要指定usage才能够进行后台验证啊
如果指定exp就不能够包含非法字符如\才能够进行后台验证啊
不知道如果两样都想要验证按照我的那些正则表达式应该怎么样写?
直接在前台写exp=@""
就出现错误提示
如果不写@就不能够进行后台验证

真的感谢楼主了

  回复  引用    

#35楼 2005-09-23 16:21 pwqzc[未注册用户]
谢谢楼主
原来我要把所有的正则表达式里面的\再帮他多加个\就一切正常啊
非常感谢

  回复  引用    

#36楼 2005-09-30 23:01 ff167[未注册用户]
我是新手,请问能给个ASPX里使用的例子吗?想要看看完全的源码.我在试验的时候,发现HTML里用是没问题,但一到ASPX里就一点反应都没有,不明白为什么会那样.连接之类的都加了,谢谢.
  回复  引用    

#37楼[楼主] 2005-10-01 07:22 ttyp      
不是有例子么
  回复  引用  查看    

#38楼 2005-10-01 15:06 ff167[未注册用户]
我已经看了DEMO,把DEMO里页面的代码COPY到我的项目的页面里(完全覆盖掉),CHECKFORM的引用也已经添加了,但使用前台验证时,就弹出"FRONT",LINKBOTTON的状况也一样,没办法进行前台验证,不知道是怎么回事,谢谢.
  回复  引用    

#39楼[楼主] 2005-10-01 15:24 ttyp      
哦,可能你没配置web.config文件,在system.web节里加上

<httpHandlers>
<add verb="*" path="checkform.ashx" type="AOA.checkformHandle,checkform" />
</httpHandlers>

  回复  引用  查看    

#40楼 2005-10-01 19:45 ff167[未注册用户]
可以了,谢谢~~
  回复  引用    

#41楼 2005-10-02 16:03 pwqzc[未注册用户]
楼主,麻烦写个正则好么?
exp=""
就是只能够输入数字,还能够输入0,但是输入01 08 0w ,也就是说能够输入0,但是以0开头的就全部错
非常感谢
我好多朋友写拉
但是都是不行,要么就是不能够输入0,要么就是能够输入01 08 0d...
谢谢

  回复  引用    

#42楼[楼主] 2005-10-02 17:53 ttyp      
exp="^[1-9]\d*$"
  回复  引用  查看    

#43楼 2005-10-20 11:00 pwqzc[未注册用户]
楼主
麻烦帮我看看这个正则怎么不可以啊?
exp="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*" tip="邮件格式不对"
怎么输入什么都是提示格式不对啊?

  回复  引用    

#44楼 2005-10-20 11:01 pwqzc[未注册用户]
exp="^[\\w-]+(\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"
这样写也不可以啊

  回复  引用    

#45楼[楼主] 2005-10-20 11:50 ttyp      
邮箱不是有内置的格式么
usage="email' tip="邮件格式不对"
你可以参考代码里面的正则

  回复  引用  查看    

#46楼 2005-10-26 22:20 一滴水      
问题:
=======
结束时间 <input type="text" name="course.endTime" usage="date" tip="结束时间!"/>
=======

这个时候时间不输入的话就会有就会有警告!

我要的效果是 时间可以为空并且当输入的时候要进行合法性验证

  回复  引用  查看    

#47楼[楼主] 2005-10-26 23:33 ttyp      
try
<input type="text" name="course.endTime" Exp="(^\d{4}(\-|\/|\.)\d{1,2}\2\d{1,2}$)|(^$)" tip="结束时间!"/>

  回复  引用  查看    

<a href='www.abc.com'>test</a>
  回复  引用    

#49楼 2005-11-21 11:01 ff167[未注册用户]
你好,有个新的问题,这个控件能在datagrid的模版列里用吗?我的模版列是textbox,用了后似乎没有反应.谢谢
  回复  引用    

#50楼[楼主] 2005-11-22 22:28 ttyp      
模板列只需要在textbox里直接加usage属性,如:<asp:textbox id="t1" usage="int+" runat="server">,具体你看演示文件,我重新做了演示
  回复  引用  查看    

#51楼 2005-11-26 23:35 ff167[未注册用户]
如果输入的数字部分可以为空,或者只能添浮点,应该怎么写表达式啊?

上面有个类似的问题...但我没看明白怎么去改写浮点的部分,谢谢.

  回复  引用    

#52楼 2005-11-27 00:02 ff167[未注册用户]
我是希望它能像用FLOAT那样,在对话框不能输入除了数字外的其他字母

我自己试用exp来控制,发现虽然判断正确,但还是能输入字母...

  回复  引用    

#53楼[楼主] 2005-11-27 11:13 ttyp      
如果可以使用空或浮点数,用exp来控制,表达式参加float的表达式(注意\\替换回\),控制不能输入除数字之外的的功能是在keycheck函数里实现的,如果不想使用exp,也可以直接改float表达式源码,重新编译下
  回复  引用  查看    

#54楼 2005-11-27 22:02 ff167[未注册用户]
源码部分不知道怎么改写- -,不太明白正则
又要麻烦您了

  回复  引用    

#55楼 2005-12-03 16:43 Chris[未注册用户]
您好,用了您的控件,感觉真爽....
有一个问题想请教:<INPUT id="Submit1" type="submit" value="提交" name="Submit1" runat="server" class="input_button">这样的Html服务器控件可以在服务器端验证吗?好象没有CausesValidation属性啊.
如果可以,是不是跟MS的验证控件有一样功能了?在客户端验证后,在服务器端再验证??

  回复  引用    

#56楼 2005-12-03 16:50 Chris[未注册用户]
刚才又试了下.发现了:check,CausesValidation分别代码客户端和服务器验证吗?
如果都不设置,是不是就是执行客户端和服务器端验证呢?

  回复  引用    

#57楼[楼主] 2005-12-04 11:14 ttyp      
1.对不起,像:<INPUT id="Submit1" type="submit" value="提交" name="Submit1" runat="server" class="input_button">这个现在服务端还没验证,你可以修改代码,以后会加上去
2.check是服务端是否验证,由于CausesValidation属性在ViewState里,我暂时还没明白怎么获得,所以添加了check这个属性,其实最好是和CausesValidation属性一致,如果你有什么好的建议可以给我

  回复  引用  查看    

RadioButtonList或是DropDownList的AutoPostBack="True"时。如何让checkform不做验证。
  回复  引用    

#59楼 2006-03-23 15:30 Fans[未注册用户]
有这个一个问题,就是一个页面上有2个用户控件,没个用户控件里各有一个验证控件,想问一下怎么解决当单击用户控件一时,只有用户控件1中的验证控件起作用,而用户控件二中的验证控件不起作用,反之,当点击用户控件2中的按钮时,用户控件1中的按钮不起左右!现在是假如一个webform中包含一个验证控件,点击页面中的所有服务器端控件验证控件都会起左右,如果要使起不受影响,只能一个一个按钮设置check="false",但这样也有问题。。。。。
  回复  引用    

#60楼 2006-03-23 15:53 Fans[未注册用户]
非常期望能解决上述问题,不然的话一个页面只能脱放一个验证控件。。。也就是说一个页面里面的用户控件中,只能有一个用户控件中存在一个验证控件。。。。
  回复  引用    

#61楼[楼主] 2006-03-23 16:31 ttyp      
其实非常想解决这个问题,但是JS读取button的CausesValidation的属性有点问题,因此目前在button里设置一个check属性是最好的办法了
  回复  引用  查看    

#62楼 2006-03-28 12:08 try[未注册用户]
从demo/webform1.aspx看。
验证按钮(客户端验证) 使用好像有问题。

验证不稳定

  回复  引用    

#63楼 2006-03-28 12:15 try[未注册用户]
使用控件 为什么验证 页面会涮新。
  回复  引用    

#64楼[楼主] 2006-03-28 12:22 ttyp      
客户端验证不稳定是否指有时候验证失效?我调试的时候碰到过一次,后来没碰到,是不是在页面没加载完时发生的?
  回复  引用  查看    

#65楼[楼主] 2006-03-28 16:15 ttyp      
@try
修复了验证不稳定的bug

  回复  引用  查看    

#66楼 2006-03-28 19:21 try[未注册用户]
我是这样操作的:(按钮都是“验证按钮”)
1.按下“验证”=》弹出提示框(页面不涮新)
2.按照提示顺序 填入 项目(填入一个,按一次按钮)
3.当 选择 “爱好” 后,再按按钮,页面就涮新(会出现后台验证提示信息)
再按一次 页面不涮新(出前台验证提示信息)


如果 不按照 顺序填,按下按钮就会页面涮新



  回复  引用    

#67楼 2006-03-28 19:28 try[未注册用户]
@ttyp
现在好像不出问题了,是什么原因引起的?

  回复  引用    

#68楼[楼主] 2006-03-28 19:40 ttyp      
是JS取消验证的一个函数(isCheck)出现了问题,我把它修复了
  回复  引用  查看    

#69楼 2006-03-28 21:19 try[未注册用户]
net2.0下好像不好使。客户端验证无法使用
  回复  引用    

#70楼[楼主] 2006-03-28 21:39 ttyp      
不好意思,没在2.0上测试过
  回复  引用  查看    

#71楼 2006-03-30 14:19 hyde      
非常感谢!等我试用一下:)
  回复  引用  查看    

我是在.net 2005 环境下用你的第一个版本!试过了 验证没问题!

但是 出现了所有的BUTTON 都加了验证!

如果我想指定某些BUTTON 执行验证,某些BUTTON 不执行验证

怎么办? 提供这样的功能吗?

  回复  引用    

#73楼[楼主] 2006-07-12 18:58 ttyp      
设置CauseValidation=false,看看示例吧
  回复  引用  查看    

@ttyp
兄弟 还是不行啊! 还是要验证! 我用的是你的第一个版本哦

  回复  引用    

#75楼[楼主] 2006-07-13 19:36 ttyp      
再下载过新的
  回复  引用  查看    

#76楼 2006-07-15 16:29 aqua[未注册用户]
请问datagrid 中.我如何在点编辑-"更新"的时候把
<FooterTemplate>
<asp:Button runat="server" Text="添加" CommandName="Insert" ID="Insert"></asp:Button>
</FooterTemplate>
把添加按钮设置为false. 就是点击"更新"的时候屏蔽"添加"的验证. 请您帮忙看一下.多谢

  回复  引用    

#77楼[楼主] 2006-07-15 17:07 ttyp      
不明白你的意思,添加和更新的验证应该是一样的啊
  回复  引用  查看    

楼主你好:

有些控件必须是在不为空的条件下才作判断

比如 邮政编码字段在数据库里是允许空的,但是如果要输入就必须作验证

这种情况 你的JS能解决吗?(前提不自己写自定义函数了)

  回复  引用    

#79楼[楼主] 2006-07-17 17:12 ttyp      
目前此控件里没有,只能另外写函数了,不过控件提供指定验证函数的接口
  回复  引用  查看    

控件提供指定验证函数的接口

不明白 能解释清楚点吗?

  回复  引用    

#81楼[楼主] 2006-07-18 07:23 ttyp      
参见这个例子
http://dooit.3322.org/checkform/demo3.htm

  回复  引用  查看    

#82楼 2006-07-19 11:08 aqua[未注册用户]
请问datagrid 中.我如何在点编辑-"更新"的时候把
<FooterTemplate>
<asp:Button runat="server" Text="添加" CommandName="Insert" ID="Insert"></asp:Button>
</FooterTemplate>
把添加按钮设置为false. 就是点击"更新"的时候屏蔽"添加"的验证. 请您帮忙看一下.多谢 回复
----------------------------------------------------------
可能我描述的不太准确.重新说明一下/.
在DataGrid中
<asp:TemplateColumn HeaderText="文本框"> <ItemTemplate> <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.TXT_X") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox id="a_txtX" runat="server" Width="100%" usage="num+" tip="请输入数字"></asp:TextBox> </FooterTemplate <EditItemTemplate> <asp:TextBox ID="m_txtX" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "TXT_X")%>' usage="num+" tip="请输入数字" Width="100%" ></asp:TextBox> </EditItemTemplate> </asp:TemplateColumn>
<asp:TemplateColumn HeaderText="操作">
<ItemTemplate>
<asp:Button runat="server" Text="编辑" CommandName="Edit" CausesValidation="false" check="false" ID="modRecord"></asp:Button>
</ItemTemplate>
<FooterTemplate>
<asp:Button runat="server" Text="添加" CommandName="Insert" ID="addRecord"></asp:Button>
</FooterTemplate>
<EditItemTemplate>
<asp:Button runat="server" Text="更新" CommandName="Update"></asp:Button>&nbsp;
<asp:Button runat="server" Text="取消" CommandName="Cancel" CausesValidation="false" check="false"></asp:Button>
</EditItemTemplate>
</asp:TemplateColumn>
我如果点击在"更新"那么就会跳到"添加"的验证上了.因为在这个时候两个验证都在起作用.我是在想如何在编辑的时候把 让 addRecord的check 变为false

  回复  引用    

#83楼[楼主] 2006-07-19 11:32 ttyp      
试试用js做

在DataGrid_ItemDataBound里

System.Web.UI.WebControls.WebControl.Button ctl =(System.Web.UI.WebControls.WebControl.Button) e.Item.FindControl("Update");

ctl.Attributes.Add("onclick","cancelCheck(this)");


js:

function cancelCheck(o){
o.previousSibling.check = false;
}

  回复  引用  查看    

#84楼 2006-07-19 11:49 aqua[未注册用户]
呵呵.没想到回复这么快.好.试试先.非常感谢您的回复
  回复  引用    

#85楼 2006-07-25 10:54 aqua[未注册用户]
试试用js做

在DataGrid_ItemDataBound里

System.Web.UI.WebControls.WebControl.Button ctl =(System.Web.UI.WebControls.WebControl.Button) e.Item.FindControl("Update");

ctl.Attributes.Add("onclick","cancelCheck(this)");


js:

function cancelCheck(o){
o.previousSibling.check = false;
}
------------------------------------------------------------
您好.我试过之后.发现总是提示javascript有错误 缺少;

  回复  引用    

#86楼[楼主] 2006-07-25 16:10 ttyp      
没加是正常的么,是不是你其他JS的错误,这段代码应该没问题的
  回复  引用  查看    

#87楼 2006-07-28 16:18 aqua[未注册用户]
没有阿.我得页面就用了这么一个javascript
<script language="JavaScript">
<!--
function cancelCheck(o)
{
o.previousSibling.check = false;
}
-->
</script>
<asp:datagrid id="userGrid" runat="server" AllowPaging="True" HorizontalAlign="Center" Height="16px" DataKeyField="USER_ID" ShowFooter="True" AutoGenerateColumns="False" Width="96%" CssClass="table1">
<SelectedItemStyle ForeColor="Blue"></SelectedItemStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<HeaderStyle CssClass="grid_header"></HeaderStyle>
<Columns> <asp:TemplateColumn HeaderText="序号"> <ItemTemplate> <asp:Label runat="server" Text='<%#Container.ItemIndex+1 %>' ID="id"> </asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label Runat="server" Text='添加记录' ID="a_record"></asp:Label> </FooterTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="用户名"> <ItemTemplate> <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.USER_NAME") %>'> </asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox id="a_userName" runat="server" Width="100%" usage="notempty" tip="请输入用户名!"></asp:TextBox> </FooterTemplate> <EditItemTemplate> <asp:TextBox ID="m_userName" runat="server" Width="100%" usage="notempty" tip="请输入用户名!" Text='<%# DataBinder.Eval(Container, "DataItem.USER_NAME") %>'> </asp:TextBox> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="登陆帐号"> <ItemTemplate> <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.LOGIN_CODE") %>'> </asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox id="a_loginCode" runat="server" Width="100%"></asp:TextBox>
</FooterTemplate> <EditItemTemplate> <asp:TextBox ID="m_loginCode" runat="server" Width="100%" Text='<%# DataBinder.Eval(Container, "DataItem.LOGIN_CODE") %>'> </asp:TextBox> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="登陆密码"> <ItemTemplate> <asp:Label runat="server" Text='******' ID="Label5"></asp:Label> </ItemTemplate> <FooterTemplate> <asp:TextBox id="a_passWord" runat="server" Width="100%"></asp:TextBox> </FooterTemplate> <EditItemTemplate> <asp:TextBox ID="m_passWord" runat="server" Width="100%"></asp:TextBox> </EditItemTemplate> </asp:TemplateColumn>
<asp:TemplateColumn HeaderText="操作"> <ItemTemplate> <asp:Button runat="server" Text="编辑" CommandName="Edit" CausesValidation="false" ID="modRecord" CssClass="button_1"></asp:Button> </ItemTemplate> <FooterTemplate> <asp:Button runat="server" Text="添加" CommandName="Insert" ID="addRecord" CssClass="button_1"></asp:Button> </FooterTemplate> <EditItemTemplate> <asp:Button runat="server" Text="更新" CommandName="Update" ID="modRecord" CssClass="button_1"></asp:Button>&nbsp; <asp:Button runat="server" Text="取消" CommandName="Cancel" CausesValidation="false" ID="Button2" CssClass="button_1"></asp:Button> </EditItemTemplate> </asp:TemplateColumn> <asp:ButtonColumn Text="删除" ButtonType="PushButton" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle Position="Top" Mode="NumericPages"></PagerStyle>
</asp:datagrid>

  回复  引用    

#88楼 2006-07-28 16:21 aqua[未注册用户]
private void userGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
foreach(TableCell tc in e.Item.Cells)
{
if(tc.Controls.Count>0)
{
foreach(Control c in tc.Controls)
{
if(c is System.Web.UI.WebControls.Button)
{ System.Web.UI.WebControls.Button lb = (System.Web.UI.WebControls.Button)c; if(lb.Text =="取消"||lb.Text =="编辑" ||lb.Text =="删除")
lb.Attributes.Add("check","false");
} else if (lb.Text=="更新")
{
lb.Attributes.Add("onclick","cancelCheck(this)");

}
}
}
}
}

}
晕.排版弄得挺难看得.呵呵

  回复  引用    

#89楼 2006-08-04 12:01 aqua[未注册用户]
??
  回复  引用    

#90楼[楼主] 2006-08-04 14:02 ttyp      
把o.previousSibling.check = false;
注释掉还错么?如果还错,请找其他原因

我估计是previousSibling产生的错误

function cancelCheck(o)
{
var a = o.previousSibling;

while(a!=null&&a.nodeType==3){
a = a.previousSibling;
}
a.previousSibling.check = false;
}

  回复  引用  查看    

#91楼 2006-09-06 18:30 aqua[未注册用户]
不好意思. 我调试了一下.发现错误是"对象为空". 另外previousSibling是作什么用的.能否解释一下.非常感谢.
  回复  引用    

#92楼[楼主] 2006-09-06 18:42 ttyp      
previousSibling作用是前一个接点,这里你的前一个接点为一个空的文本,而应该是前面一个按钮就对了
  回复  引用  查看    

#93楼 2006-09-08 12:16 aqua[未注册用户]
恩,是的.我前面的都是文本框. 我想不改变布局.不知这样该如何改动?
  回复  引用    

请教一个问题:
在input上加了onkeypress的相关验证后 好象切换输入法有问题了
比如 在一个input上用正则表达式限制输入长度 切换输入法后还是只能输入字母 但是如果在切换输入法后 刷新页面 输入法就能使用了

demo1的数字验证框中就有这个问题(虽然已经限制了只能输入数字,但是不能切换输入法 算是个BUG吧 汗。。)

有办法解决这个么 多谢先


  回复  引用    

#95楼[楼主] 2006-10-10 18:39 ttyp      
关闭输入法
<input style="ime-mode:disabled">

  回复  引用  查看    

哦 明白了 多谢回复
另外还有一个问题,我用正则表达式/^\S{20}$/限制文本框的长度
如果文本框全部输入中文 好象就起不了作用了
如果输字母或数字就能限制

  回复  引用    

测试一下。。谢谢
  回复  引用    

#98楼 2006-10-16 16:06 李燕平      
的确是好东西
  回复  引用  查看    

楼主你好,js的代码好像不支持允许为空的验证,如何加上?

  回复  引用    

#100楼[楼主] 2006-10-24 08:36 ttyp      
下载http://ttyp.cnblogs.com/Files/ttyp/checkform-for.net.rar,里面的JS是最新的,可以支持
  回复  引用  查看    

谢谢,辛苦啦
  回复  引用    

有bug啊,在webform上如果只有一个textbox,回车的时候会交回服务器端验证,客户端验证就不起作用了:
<asp:TextBox id="TextBox1" runat="server" tip="请输入姓名!" usage="notempty"></asp:TextBox>
<cc1:checkform id="Checkform1" runat="server" ShowStyle="All" ShowWay="Alert"></cc1:checkform>

  回复  引用    

asp.net 2.0中是否支持?用materpage做的页面是否支持?
  回复  引用    

#104楼[楼主] 2006-11-15 17:50 ttyp      
不支持,还没装2005呢,反正有代码,应该不会太大改动
  回复  引用  查看    

#105楼 2006-11-18 14:24 xtive[未注册用户]
我的页面除了使用你的js验证(非.net版),另外还有一处javascript代码,需要获取表单验证的结果来进行其他处理;
请问,我的js如何获取和判断CheckForm的验证结果?谢了先

  回复  引用    

#106楼[楼主] 2006-11-18 14:55 ttyp      
需要手工判断么?

g_check.checkForm(form)

  回复  引用  查看    

#107楼 2006-11-18 14:58 xtive[未注册用户]
谢谢,就是它,我的javascript太差,见笑了 ;)

你的表单做得很好,相比.Net的,我更喜欢js的版本,做成.net控件不仅使用麻烦,而且觉得也消耗更多资源 :-)

  回复  引用    

#108楼 2006-11-27 17:11 cand[未注册用户]
可能验证两个日期大小吗?
怎样对比??

  回复  引用    

#109楼 2006-12-24 16:43 gang[未注册用户]
请问如何验证一个文本框 不为空且字数不大于50?
  回复  引用    

兄弟 我把不需要验证的button 设置的属性CauseValidation=false

为什么还是验证了啊?

  回复  引用    

#111楼[楼主] 2007-01-21 09:10 ttyp      
不明白,你看看例子吧
  回复  引用  查看    

其实说明白点就是 一加了页面验证的功能后所有的button都加了验证的功能,

只要一点button 就要严整,请问怎么解决,

我看了上面的留言设置button的CauseValidation=false 属性 还是不管用


  回复  引用    

#113楼[楼主] 2007-01-22 09:48 ttyp      
你的意思我明白,但是我没办法重现。你看看例子中的代码,演示的很清楚
  回复  引用  查看    

我靠 你的所有例子里就一直都没有CauseValidation=false 这几个字出现过
也没有对 我提到过问题的处理方式,拜托你自己看看你的demo还不好??!
所有的demo我都看了 就是没有这个情况的demo

  回复  引用    

#115楼[楼主] 2007-01-24 12:24 ttyp      
对不起,帮不到你了,demo我当然看过,属性是在IDE里设置的,当然不会有提,叫你看DEMO是看看,为什么DEMO里能忽略按钮验证
  回复  引用  查看    

#116楼 2007-01-25 08:46 aa[未注册用户]
楼主,你好,不是.net的最新例子在哪里下载?就是原来发在这里的有没有最新的版本:http://www.cnblogs.com/ttyp/archive/2005/04/06/132727.html
还有一个问题,就是能不能不要自动在onsubmit里调用,因为我有这样的需求:先checkform,通过后,执行 JavaScript:confirm("确定要提交吗?"); 如果不通过就不confirm 。
谢谢!

  回复  引用    

#117楼 2007-01-26 07:57 aa[未注册用户]
允许为空或允许数字(包括整数和浮点数)怎么写?我看了上面的评论,但还是没有搞定,这样写也不行:(^$)|(^([+-]?)\\d*\\.?\\d+$) 单独写是可以的,用"|或"之后就不行了,能不能临时加一下我的QQ:14460944?谢谢了!
  回复  引用    

#118楼[楼主] 2007-01-26 09:03 ttyp      
to aa:
1.你把checkform.js代码里的//自动绑定到所有form的onsubmit事件这段给去掉
2.num为数字,float为浮点数,int为整数,后面加上+表示仅仅正数,前面加上^表示还能为空

你试试usage = "^num"

  回复  引用  查看    

#119楼 2007-01-29 14:43 aa[未注册用户]
你试试usage = "^num"
======================
数字:<INPUT usage="^num" >345<BR>

提交之后弹出:表达式[^num]错误:语法错误

  回复  引用    

#120楼[楼主] 2007-01-29 18:27 ttyp      
没有问题啊,你还是再下载一次吧,也许你用的老版本的
  回复  引用  查看    

#121楼 2007-02-15 14:32 boyyao[未注册用户]
已经在web。comfig文件中加了
<httpHandlers>
<add verb="*" path="checkform.ashx" type="AOA.checkformHandle,checkform" />
</httpHandlers>
并且直接在浏览器中访问checkform.ashx也可以得到正确的结果。
但是客户端验证还是无效。
为什么?
我是在.net 2.0中重新编译了以下。并且把文件转成了utf-8.网站的所有页面格式都是utf-8的。

  回复  引用    

以前俺做了两个呢,第一个是自定义控件形式,处理一个页面所有验证,假设一个页面有20个表单,用net带的验证控件简直就是要命,整个页面都堆满了验证控件,呵呵。后来写了一个纯js的验证,可以基于配置文件也可以象楼主一样在标签旁添几个属性然后进行验证,但是推荐用配置文件噢,如果页面换了,配置文件留着可以配上新增的页面呢,只要表单id不变就好了
  回复  引用    

看看我的js消息类,以后有空再整理一下,最近太忙了
我的目的就是让使用者都能很容易的配置,以及易扩展。
因为我不可能想得很全面
------------------------
var Msgs = function (){};
Msgs.title ='温馨提示:\n';
Msgs.foot ='请重新输入。';
Msgs.Length = Msgs.title + ' {0} 由 {1} - {2} 个字符组成,' + Msgs.foot;
Msgs.Range = Msgs.title + ' {0} 的输入值范围在 {1} - {2} 之间,'+ Msgs.foot;
Msgs.Compare = Msgs.title + ' \"{0}\" 的输入值必须 {1} \"{2}\" 的输入值。'+ Msgs.foot;
。。。。。。


  回复  引用    

#124楼 2008-06-11 16:36 求知无傲      
我还来
  回复  引用  查看    

评论共2页: 上一页 1 2