SZ_Orain 2016-10-03 15:47 采纳率: 0%
浏览 1111

我写的异步验证,其他时间都出发了,但是异步验证的校验没触发,是怎么回事咯,求前辈们指导下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



//获得XMLhttpRequest对象
function ajaxFunction(){
var xmlHttp;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{// Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return xmlHttp;

}
//获得了username的异步的httpservlet对象的工具。
function checkusername(){
//获得异步httpservlet
var value = document.getElementById("username").value;
var regUsername = /^[a-zA-Z\d]\w{3,11}[a-zA-Z\d]$/;
var span1 = document.getElementById("span1");
//每次使用之前先清空span。
span1.innerHTML = "";

//校验用户名的格式
if(!regUsername.test(value)){
span1.innerHTML = "账号输入有误,请重新输入";
return false;
}else{
var xjr = ajaxFunction();

xjr.onreadystatechange = function(){

if(xjr.readyState==4){
if(xjr.status==200){
//代表相应完成,接收数据即可
var data = xjr.responseText;
alert(data);

if(data == 1){
//证明existCustomer为null,该用户名没有注册
span1.innerHTML = "该用户名可以使用";

}else{
span1.innerHTML = "该用户名已被使用";
return false;
}
}
}

xjr.open("POST","${pageContext.request.contextPath}/savaUserName",true);
xjr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xjr.send("username=value");
}
return true;

}

}

  //验证密码,验证密码需要验证2大块内容,1为密码的语法是否正确,2为密码和重复密码是否相等。
   function checkpassword() {      
    //获得span的对象
    var span2 = document.getElementById("span2");
    //清空span
    span2.innerHTML = "";
    //首先定义密码的正则:
    var regPassword = /^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;
    //获得密码和重复密码的值。
    var password = document.getElementById("password").value;
    var repassword = document.getElementById("repassword").value;
    //两者对比
    if(!regPassword.test(password)){
     span2.innerHTML = "密码输入有误,请重新输入";
     return false;
    }
    return true;
}
function checkrepassword(){
    //获得span的对象
    var span2 = document.getElementById("span2");
    //清空span
    span2.innerHTML = "";       
    //获得密码和重复密码的值。
    var password = document.getElementById("password").value;
    var repassword = document.getElementById("repassword").value;
   if(password!=repassword){
    span2.innerHTML = "两次密码输入不同,请重新输入";
    return false;
    }
    return true;
}
//验证姓名,只需要验证不为空即可。
function checkname() {
    //获得name的值
    var name = document.getElementById("name").value;
    //获得name的正则表达式
    var reg=/^([\u4e00-\u9fa5]){2,7}$/; 
    var span3 = document.getElementById("span3");
    span3.innerHTML = "";
    if(!reg.test(name)){
       //证明name不匹配2-7个汉字
      span3.innerHTML = "你输入的姓名有误,请检查后输入";
      return false;            
    }
    return true;
}   
//验证昵称,不为空
function checknickname() {
    //获得昵称文本值
    var nickname = document.getElementById("nickname").value;
    //获得span3对象。
    var span4 = document.getElementById("span4");
    span3.innerHTML = "";
    if(nickname==""){
      span4.innerHTML = "昵称不能为空";
      return false;
    }
    return true;
}
//验证手机号码
function checkcellphone() {
    //获得手机号码的正则;
    var regphone = /^1[34578]{1}\d{9}$/;
    //获得手机号码的值。
    var cellphone = document.getElementById("cellphone").value;
    //获得span的对象。
    var span = document.getElementById("cell");
    span.innerHTML = "";
    //验证正则。
    if(!regphone.test(cellphone)){
    //证明手机号码格式不对
    span.innerHTML = "手机号码格式不对,请重新输入";
    return false;
    }
    return true;
}
//验证地址的文本值。
   function checktown() {
    //获得town的文本值
    var town = document.getElementById("town").value;
    //获得span5的值。
    var span5 = document.getElementById("span5");
    span5.innerHTML = "";
    //验证文本值不为空。
    if(town==""){
     span5.innerHTML = "地址不能为空";
     return false;
    }
    return true;
}
//返回总值
function fun() {
    return checkcellphone()&&checkname()&&checknickname()
    &&checkpassword()&&checkrepassword()&&checktown()&&checkusername();
}
    </script>









































































欢迎您成为超级购物系统会员
账号

密码

重复密码

您的姓名


您的昵称


出生日期




1990年
1991年
1992年
1993年
1994年
1995年
1996年
1997年
1998年



1月
2月

3月

4月

5月

6月

7月

8月

9月

10月

11月

12月


您的手机号码


您的地址

选择省份



选择城市


街道,乡镇







checkusername()函数中的xjr.onreadystatechange = function()函数不触发,
直接跳到了下面的return true中,这让我很不解。。。。

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2016-10-03 15:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题