c# – 链接问题文本框控件的必填字段和正则表达式验证器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 链接问题文本框控件的必填字段和正则表达式验证器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2716字,纯文字阅读大概需要4分钟。
内容图文
![c# – 链接问题文本框控件的必填字段和正则表达式验证器](/upload/InfoBanner/zyjiaocheng/794/3395cfc69c0b44a68f2280be3a67a8bb.jpg)
我正在尝试使用ASP.net实现表单验证,我尝试了每个解决方案建议here,但最好的解决方案是在aspsnippets.com到目前为止.
我的代码如下:
<asp:TextBox ID="tTitle" runat="server" onblur="WebForm_OnBlur()"/>
<asp:RequiredFieldValidator runat="server" ControlToValidate="tTitle"/>
<asp:TextBox ID="tEMail" runat="server" onblur="WebForm_OnBlur()"/>
<asp:RequiredFieldValidator runat="server" ControlToValidate="tEMail"/>
<asp:RegularExpressionValidator runat="server" ControlToValidate="tEMail"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>
<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit"/>
使用Javascript
<script type="text/javascript">
function WebForm_OnSubmit() {
if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false)
{
for (var i in Page_Validators) {
try {
var control =
document.getElementById(Page_Validators[i].controltovalidate);
if (!Page_Validators[i].isvalid) {
control.className = "error";
} else {
control.className = "";
}
} catch (e) { }
} return false;
} return true;
}
function WebForm_OnBlur() {
for (var i in Page_Validators) {
try {
var control =
document.getElementById(Page_Validators[i].controltovalidate);
if (!Page_Validators[i].isvalid) {
control.className = "error";
} else {
control.className = "";
}
} catch (e) { }
} return false;
}
</script>
问题是电子邮件字段仅验证正则表达式.如果我更改验证器的顺序,它只验证所需的表达式.
可能的问题是代码循环遍历所有验证器,但不会比较同时引用同一控件的验证器.这会导致仅在控件上应用最后一个验证器条件.
解决方法:
The possible problem is that the code loops through all the validators but does not compare the ones that reference the same control at once. This causes only the last validator condition to be applied on the control.
是的,这确实是问题所在.要解决此问题,您可以执行以下操作:
在WebForm_OnBlur函数中,循环遍历与失去焦点的控件关联的验证器(而不是页面上的所有验证器),并且仅当所有验证器都有效时才清除className属性:
function WebForm_OnBlur(control) {
for (var i = 0; i < control.Validators.length; i++) {
if (!control.Validators[i].isvalid) {
control.className = "error";
return;
}
}
control.className = "";
}
在TextBox控件的onblur属性中,将其作为参数传递给WebForm_OnBlur:
<asp:TextBox ID="tTitle" runat="server" onblur="WebForm_OnBlur(this)"/>
<asp:TextBox ID="tEMail" runat="server" onblur="WebForm_OnBlur(this)"/>
在WebForm_OnSubmit函数中,为具有关联验证器的每个控件调用WebForm_OnBlur:
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) === "function" && ValidatorOnSubmit() === false) {
for (var i = 0; i < Page_Validators.length; i++) {
var control = document.getElementById(Page_Validators[i].controltovalidate);
if (Page_Validators[i] === control.Validators[0]) // minor optimization
WebForm_OnBlur(control);
}
return false;
}
return true;
}
内容总结
以上是互联网集市为您收集整理的c# – 链接问题文本框控件的必填字段和正则表达式验证器全部内容,希望文章能够帮你解决c# – 链接问题文本框控件的必填字段和正则表达式验证器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。