现在程序的实际情况是
比如会员名是否重复 输入一个重复的用户名后,马上就会有msg 提示“对不起!用户名已经存在,请重新输入!”但是我觉得按这个程序来说,应该是点  "我要注册新用户" 后 才应该出提示啊因为 输完用户名 会执行 findUsernameIsExist()这个方法。
但是这个方法执行的结果就是给
str1 赋值 是空还是”1“真正判断 str1==1  
然后提示 用户已经存在 还是在sub 方法里。
要执行sub 方法 必须要点 "我要注册新用户" 才对吧
请大家为我解释下 为什么代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title><script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
  $("document").ready(function() {
    $("#safe").hide();
    $("#gaoji").click(function() {
      if($("#gaoji").attr("checked")==true) {
        $("#safe").show();
        $("#str3").val("1");
      }else {
        $("#safe").hide();
        $("#str3").val("0");
      }
    })
  })
</script>
<script type="text/javascript">
  function sub() {
    var email = $("#email").val();
    var username = $("#username").val();
    var password = $("#password").val();
    var tpassword = $("#tpassword").val();
    var str = $("#str").val();
    var str1 = $("#str1").val();
    var str2 = $("#str2").val();
    var rand = $("#rand").val();
    if($.trim(email).length<1) {
      $("#msg").html("提示信息:对不起!电子邮箱不能为空,请重新输入!");
      return false;
    }else if(!(email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)){
      $("#msg").html("提示信息:对不起!电子邮箱输入有误,请重新输入!");
      return false;
    }else if(str == '1') {
      $("#msg").html("提示信息:对不起!电子邮箱已经存在,请重新输入!");
      return false;
    }else if($.trim(username).length<1) {
      $("#msg").html("提示信息:对不起!用户名不能为空!");
      return false;
    }else if(str1 == '1') {
      $("#msg").html("提示信息:对不起!用户名已经存在,请重新输入!");
      return false;
    }else if($.trim(password).length<1) {
      $("#msg").html("提示信息:对不起!登陆密码不能为空!");
      return false;
    }else if(password != tpassword) {
      $("#msg").html("提示信息:对不起!确认密码和登陆密码不一致!");
      return false;
    }else if($.trim(rand).length<1) {
      $("#msg").html("提示信息:对不起!验证码不能为空!");
      return false;
    }else if($("#str3").val()=='0'){
        var now = new Date().getTime();
        $.ajax({
      url: 'userManager.do?method=add',
      type: 'post',
      data: 'username=' + username + '&password=' + password + 
            '&rand=' + rand + '&email=' + email + '&now=' + now,
      success: function(data){
         if(data == 'OK') {
           alert("恭喜你!注册成功!");
           $("#msg").html("");
         }else {
           $("#msg").html("提示信息:" + data);
         }
      },
      error: function() {
        // 
      }
    });
    }else if($("#str3").val()=='1') {
        var now = new Date().getTime();
        var gender = $("#gender").val();
        var birthday = $("#birthday").val();
        var cityId = $("#cityId").val();
        var countryId = $("#countryId").val();
        var townId = $("#townId").val();
        var jd = $("#jiedao").val();
        var qqNum = $("#qqNum").val();
        var problem = $("#problem").val();
        var problemResult = $("#problemResult").val();
        if($.trim(birthday).length<1) {
          $("#msg").html("提示信息:Sorry!出生日期不能为空,请输入!");
          return false;
        }else if($.trim(qqNum).length<1) {
          $("#msg").html("提示信息:Sorry!QQ号码不能为空,请输入!");
          return false;
        }else if($.trim(problemResult).length<1) {
          $("#msg").html("提示信息:Sorry!问题答案不能为空,请输入!");
          return false;
        }else {
           $.ajax({
      url: 'userManager.do?method=add',
      type: 'post',
      data: 'username=' + username + '&password=' + password + '&gender=' + gender + '&birthday=' + birthday + '&cityId=' + cityId +
            '&qqNum=' + qqNum + '&problem=' + problem + '&problemResult=' + problemResult + '&countryId=' + countryId + '&townId=' + townId + '&jd=' + jd +
            '&rand=' + rand + '&email=' + email + '&now=' + now,
      success: function(data){
         if(data == 'OK') {
           alert("恭喜你!注册成功!");
         }else {
           $("#msg").html("提示信息:" + data);
         }
      },
      error: function() {
        // 
      }
    });
        }
    }
    
  }
  // 查询邮箱是否存在
  function findEmailIsExist() {
    var email = $("#email").val();
    var now = new Date().getTime();
    if(!(email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)){
      $("#msg").html("提示信息:对不起!电子邮箱输入有误,请重新输入!");
    }
    $.ajax({
      url: 'userManager.do?method=email',
      type: 'post',
      data: 'email=' + email + '&now=' + now,
      success: function(data){
         if(data != '') {
          $("#msg").html("提示信息:" + data);
          $("#str").val("1");
         }else {
           $("#str").val("");
         }
      },
      error: function() {
        // 
      }
    });
  }
  // 查询用户名是否存在
  function findUsernameIsExist() {
    var username = $("#username").val();
    var now = new Date().getTime();
    $.ajax({
      url: 'userManager.do?method=username',
      type: 'post',
      data: 'username=' + username + '&now=' + now,
      success: function(data){
         if(data != '') {
          $("#msg").html("提示信息:" + data);
          $("#str1").val("1");
         }else {
           $("#str1").val("");
         }
      },
      error: function() {
        // 
      }
    });
  }
  
</script>
  </head><body>
<form action="" id="frmUser" name="frmUser" method="post">
<input type="hidden" name="str" id="str">
<input type="hidden" name="str1" id="str1">
<input type="hidden" name="str2" id="str2">
<input type="hidden" name="str3" id="str3" value="0">
  <div style="margin-left: 20px;">
  <br>
    <b>添加新用户信息</b>
    <hr>
    <br>
    <font id="msg" style="color: red;"></font>
    <br><br>
    <!-- 添加新用户信息 -->
    电子信箱:<input type="text" name="email" id="email" style="width: 200px;" onblur="findEmailIsExist();">
    <br><br>
    会 员 名:<input type="text" name="username" id="username" style="width: 200px;" onblur="findUsernameIsExist();"> 
    <br><br>
    登陆密码:<input type="password" name="password" id="password" style="width: 200px;"> 
    <br><br>
    确认密码:<input type="password" name="tpassword" id="tpassword" style="width: 200px;"> 
    <br><br>
    验 证 码:<input type="text" name="rand" id="rand" style="width: 100px;" onblur="convertRand();"> 
    <a href="javascript:void(0);" onclick="seeE();return false;"><img id="vadimg" class="yzm" src="./image.jsp" border="0"></a>
    <br><br>
    <b>高级选项</b> <input type="checkbox" name="gaoji" id="gaoji">显示高级用户设置选项
    <br><br>
    <div id="safe">
     性 &nbsp; &nbsp; &nbsp; 别:<select name="gender" id="gender" style="width: 150px;">
      <option value="保密"> 保 密 </option>
      <option value="男性"> 男 性 </option>
      <option value="女性"> 女 性 </option>
     </select>
     &nbsp;&nbsp; 出生日期:<input type="text" name="birthday" id="birthday" style="width: 150px;">
     &nbsp;&nbsp;Q Q号码:<input type="text" name="qqNum" id="qqNum" style="width: 150px;">
     <br><br>
         安全问题:<select name="problem" id="problem" style="width: 150px;">
      <option value="我的出生地是?"> 我的出生地是? </option>
      <option value="我的女友姓名是?"> 我的女友姓名是? </option>
      <option value="我的职业是?"> 我的职业是? </option>
      <option value="我最喜欢的歌曲?"> 我最喜欢的歌曲? </option>
     </select>
     &nbsp;&nbsp; 问题答案:<input type="text" name="problemResult" id="problemResult" style="width: 150px;">
     <br><br>
    </div>
    <input type="button" value="我要注册新用户" onclick="sub()"> &nbsp;&nbsp;&nbsp;&nbsp;
    <input type="reset" value="我要重置信息">
  </div>
 
  
  </form>
</body>
</html>

解决方案 »

  1.   

    因为你用户名判断那里用的是Ajax,Ajax是属于异步的,也就是说写完名子就执行的!
    要想点击后出现,把判断的方法加到提交的按钮里!
    也就是说让sub()方法在最开始调用 findUsernameIsExist() 方法;把用户名里的调用去掉~!
      

  2.   

    2楼可以说清楚点吗?
    不管怎么样,在我刚填完用户名的时候,没有调用过sub() 方法吧?
    为什么会执行sub 里面的语句呢?