日期:2014-05-17  浏览次数:20474 次

js和Ajax表单验证时提交问题
<form runat="server">
用户名:<asp:TextBox ID="UserName" runat="server" onblur="checkUserName();"></asp:TextBox>
</form>

<asp:Button ID="submit" runat="server" Text="提交" onclick="submit_Click" onclientclick="return checkForm()" />

<script type="text/javascript">

  function checkUserName() {

  var u = $("#UserName").val();

  var unLen = u.replace(/[^\x00-\xff]/g, "*").length;
  if (unLen < 2) {
  $("#yhm").html("用户名小于2个字符");
  return false;
  }
  else if (unLen > 20) {
  $("#yhm").html("用户名大于20个字符");
  return false;}
  var unLen = u.replace(/\d+/g, "").length;
  if (unLen < 2) {
  $("#yhm").html("不能使用纯数字注册");
  return false;}
  var usernamepattern = /^[a-zA-Z0-9_\u4e00-\u9fa5]{2,20}$/;
  if (!usernamepattern.test(u)) {
  $("#yhm").html("用户名含有非法字符");
  return false;
 }
  aaa();
  return true;  
}
</script>

<script type="text/javascript">
  function checkForm() {
  if (!checkUserName()) {
  return false; }
  }
</script>

<script type="text/javascript">

  function aaa() {
  name = document.getElementById("UserName").value;
  try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (e) {
  try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e) {
  }
  }
  xmlhttp.onreadystatechange = test;
  xmlhttp.open("post", "Ajax.ashx", true);
  xmlhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
  xmlhttp.send("username=" + name);
  }
  function test() {
  if (xmlhttp.readystate == 4) {
  if (xmlhttp.status == 200) {

  if (xmlhttp.responseText == 0) {
  $("#yhm").html("用户名已存在");
  }
  else if (xmlhttp.responseText == 1) {
  $("#yhm").html("可以");
   
  } } } }
</script>  

请问,在用户名重复的时候,怎样让button不提交。

------解决方案--------------------
再加个判断么
if($("#yhm").html()="用户名已存在")
return false;
------解决方案--------------------
方法aaa()里面如果存在则返回false,其他则返回true

然后在checkUserName 最后将
aaa();
return true;


=》
return aaa();
------解决方案--------------------
改成同步方式执行

增加一个全局变量
var bCheck = false;

function checkUserName() {
...............
 aaa();

if(bCheck)
{
return true;
}
else
{
return false;
}
}

//同步执行
xmlhttp.open("post", "Ajax.ashx", false);





 if (xmlhttp.responseText == 0) {
$("#yhm").html("用户名已存在");
bCheck = false;

}
else if (xmlhttp.responseText == 1) {
$("#yhm").html("可以");
bCheck = true;
}