//*******************Ajax 调用验证控件(客户端调用服务器验证控件)********************
Page_ClientValidate(null); //页面上的所有验证控件执行验证
//js 可以获得页面上所有的验证控件在客户端是否验证通过,
// 在使用Page_IsValid前要先调用 Page_ClientValidate(null),因为他的默认值是true
//alert(Page_IsValid);
// ValidatorValidate(<%=RequiredFieldValidator1.ClientID%> , null, null)//调用指定的控件执行验证
// <%=RequiredFieldValidator1.ClientID%> .isValid=false;
//alert(<%=RequiredFieldValidator1.ClientID%> .isvalid)//获得指定的验证控件在客户端是否验证通过
var isValid = true; //全局验证
//txtLogid控件失去焦点时触发事件(验证用户名是否存在)
var IdExist = document.getElementById("<%=txtLogid.ClientID%>")
IdExist.onblur = function () {
doAjax("GET", null, "../isAjaxHelper.ashx?userId=" + IdExist.value,<%=CustomValidator1.ClientID%>)//调用Ajax 异步操作
}
//Ajas PostGet传值方式,prars参数,url提交页面,ContralID验证控件id
function doAjax(PostGet, prars, url,ContralID) {
xhr.open(PostGet, url, true); //设置参数
//设置回调函数 callback (不是 callback())
if (PostGet == "POST") {
xhr.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
xhr.onreadystatechange = login;
xhr.send(prars); //出发
}
else {
xhr.onreadystatechange = function(){callback(ContralID)} ;
xhr.send(null);
}
}
//回调函数1
function callback(ContralID) {
//检查 异步对象 的准备状态是否=4,如果等于4说明服务器已经将数据发回给异步对象了
if (xhr.readyState >= 4) {
if (xhr.status == 200) {
var rest = xhr.responseText
if (rest != null) {
if (rest == 1) {
isValid = true;
}
else {
isValid = false;
}
//***************调用指定的控件执行验证会执行ClientValidate(source, arguments)方法*****************
ValidatorValidate(ContralID , null, null);
}
} //正常返回,判断服务器返回的状态码是否=200
else {
alert(xhr.status);
}
}
}
//**************************自定义验证控件设置是否验证通过***************************
function ClientValidate(source, arguments) {
if (isValid) {//用户名存在
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
---------------------------------------------------------------------------------------
<td valign="top" width="37%" align="left" style="height: 26px">
<asp:TextBox ID="txtLogid" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" BackColor="White"
ControlToValidate="txtLogid" Display="Dynamic" ErrorMessage="用户名不能为空" InitialValue=""
ForeColor="Red">*</asp:RequiredFieldValidator>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="用户名已存在" ControlToValidate="txtLogid"
ClientValidationFunction="ClientValidate" Display="Dynamic" ForeColor="Red">*</asp:CustomValidator>
<label id="LabUser" style="color: Red; font: menu">
</label>
</td>
------------------------------------------------------------------------------------------
以上是前台代码 有自定义验证控件( <asp:CustomValidator ID="CustomValidator1" runat="server") 由于后台代码我是写在一般处理程序
我不知道怎么做自定义验证控件服务端验证 希望大神们指点下