我在asp.net mvc中有一个注册表单,如果该特定电子邮件已经存在,我想阻止该表单提交。我想使用ajax解决它,而不使用远程属性。下面是代码。我已使用ajax检查了电子邮件可用性,但不知道如何阻止表单提交。如果用户按下提交按钮,则只显示警告框,电子邮件已存在。
$(document).ready(function(){
$('#txtUsername').blur(function(){
$.ajax({
type:'POST',
url:'/Home/CheckName',
data:"{'searchString':'"+ document.getElementById('txtUsername').value + "'}",
success : function(data)
{
if(data=="true")
{
alert("Username not Available");
}
else
{
alert("Username Available");
}
});
});
});
HomeController.cs
[HttpPost]
public ActionResult Index(User model)
{
try
{
db.AddToUsers(model);
db.SaveChanges();
return RedirectToAction("Index");
}
catch(Exception ex)
{
}
return View("Index",model);
}
}
}
public JsonResult CheckName(string searchString)
{
var count=db.Users.Where(c=>c.User.Contains(searchString)).Count();
if(count>=1)
{
return Json(true);
}
else
{
return Json(false);
}
}
答案 0 :(得分:0)
创建一个全局变量,在方法中设置它,然后在单击提交时检查var。
添加此全局变量:
var _canSubmit = false; //default
$(document).ready(function(){
$('#txtUsername').blur(function(){
$.ajax({
type:'POST',
url:'/Home/CheckName',
data:"{'searchString':'"+ document.getElementById('txtUsername').value + "'}",
success : function(data)
{
if(data=="true")
{
_canSubmit = true;
alert("Username not Available");
}
else
{
_canSubmit = false;
alert("Username Available");
}
});
});
});
然后点击提交时添加:
javascript:if ( _canSubmit == false ) { return false } else{ return true; }