有一个非常奇怪的问题。
我刚刚在我的网站上成功实现了一个简单的ajax验证(是的!)。我通过backcode将验证连接到每个文本框的OnFocusOut事件,它完美地运行。
当在同一页面上调用完全相同的方法并通过validate()方法传递相同的参数或在document.ready()上添加属性OnFocusOut时,会发生奇怪的错误。我一直保持500的状态。
我能够验证在使用validate()时未成功调用服务器端方法,但在触发OnFocusOut时运行。
WebServiceAdapter
function ValueChanged(target, validationDiv,valueType) {
targetControl = document.getElementById(validationDiv);
//添加了这个部分,因为我猜到了一个null导致它 var str =(target.value ==='')? “ “ : 目标价值;
switch (valueType) {
case "email":
webServiceAdapter.EmailExist(str);
break;
case "screenName":
webServiceAdapter.ValidScreenName(str);
break;
case "changePassword":
webServiceAdapter.PasswordCorrect(str);
break;
}
添加OnFocusOut反码 - 工作
txtEmail.Attributes.Add("onfocusout", "ValueChanged(this,'"+Email.ClientID+"','email')");
添加OnFocusOut jquery - 无法正常工作
$("#<%=txtEmail.ClientID%>").attr("onfocusout", "ValueChanged('<%=txtEmail.ClientID%>', '<%=Email.ClientID%>', 'email')");
通过validate()方法调用 - 不工作
ValueChanged('<%=txtEmail.ClientID%>', '<%=Email.ClientID%>', 'email');
修改
我也收到此错误“发生错误:无效的Web服务调用,缺少参数值:'email'。”在调用validate()
之后答案 0 :(得分:0)
解决了这个问题。
真的很尴尬。这是一个“常识错误”。
ValueChanged()期望一个对象作为第一个参数 - 这就是后码使用“this”做的事情。对于来自validate()的调用,我使用的是ID。