一个简单的注册表单有一个字段“Preferred login id (username)”。用户输入电子邮件后,我通过将其与数据库值进行比较来验证输入的用户名(如果它已经存在或不存在)。为此,我正在使用 jquery 的 $.ajax 方法进行服务器调用。
<script>
$('#txtPreferredLogin').focusout(function () {
$.ajax({
type: "POST",
url: "../Login.aspx/CheckUserName",
async: false,`enter code here`
data: "{userName: '" + $('#txtPreferredLogin').val() + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$('#valid').html("<img src='Images/waiting.gif' alt='Checking username!'>");
var delay = function () {
AjaxSucceeded(response);
};
setTimeout(delay, 500);
},
failure: function (response) {
alert(response.d);
}
});
});
function AjaxSucceeded(result) {
if (result.d == true) {
$('#valid').html("<img src='Images/2_Not.png' alt='Username taken!'>");
}
else {
$('#valid').html("<img src='Images/1_available.png' alt='Username available!'>");
}
}
$.validator.addMethod('notNone', function (value, element) {
return (value != '0');
});
$(function () {
$("#regi1").validate(
{
rules:
{
ddlCity:
{
required: true,
notNone: true
},
txtDOB:
{
required: true,
dpDate: true
}
},
messages: {
ddlCity: "Please select city",
txtDOB: "Please enter a valid date (dd-mm-yyyy)"
}
});
});
</script>
服务器端代码是
public bool getVal(string userName)
{
var query = from p in context.tblBasicDetails
where p.LoginId == userName.Trim()
select p;
if (query.Any())
{
return true;
}
else
{
return false;
}
}
[WebMethod]
public static bool CheckUserName(string userName)
{
Login l = new Login();
return (l.getVal(userName));
}
现在,当用户名不可用时,它会显示其不可用的消息(图像)。但是我在这些字段下方有“保存”按钮,单击哪个整个表单得到验证,即它不会回发页面,直到所有字段都有效,除非用户名不可用。现在,如果用户名不可用,我不想进行回发。我需要对代码进行哪些更改?