/**************************************************
Ajax 实现 用户名自动验证功能
Code by 段高辉 E-mail:gaohuisoft@hotmail.com
*************************************************/
// JavaScript Document
//创建XMLHttpRequest 实例 req,并接受用户参数#########
var req = false;
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
req = false;
}
}
if (!req && typeof XMLHttpRequest != 'undefined') {
req = new XMLHttpRequest();
}
//发送请求 参数依次为 传送方式(get、post),处理网址(url),同步(true,false)
function Send( medhot, url, tb, action, msgFalse, msgTrue ){
var medhot=medhot;
var url=url;
var tb=tb;
req.open( medhot, url, tb );
req.onreadystatechange = function() {RequestProcessor( action, msgFalse, msgTrue )};
if ( ! XMLHttpRequestState(req)){
req.send();
}else{
//document.write("对不起,请稍等...")
}
}
//验证xmlHttp状态是否正在请求
function XMLHttpRequestState(req){
switch ( req.ReadyState ){
case 1,2,3:
return true;
break;
default:
return false;
break;
}
}
//onreadystatechange 请求处理机制 RequestProcessor #########
function RequestProcessor( action, msgFalse, msgTrue ){
var chk = "false";
if ( req.ReadyState == 4 ) //等于4表示请求
{
//返回状态 state 等于 200 表示一切顺利
if ( req.status == 200 ) {
//如果responseText不为空,说明有信息返回
var text = req.responseText;
if ( text != "" ){
if (text=="true" ){
InnerHtml( action+"_alert", msgFalse );
ChangeClass( action+"_alert", "chk_false");
}else{
InnerHtml( action+"_alert", msgTrue );
ChangeClass( action+"_alert", "chk_true");
chk = "true";
}
}else{
InnerHtml( "user_alert", "重新选择" );
}
}else {
InnerHtml( "user_alert", req.status)
//document.write(req.status)
}
}
document.getElementById( action+"_chk" ).value = chk;
// alert( action + "---"+ chk + "-----" + document.getElementById( action+"_chk" ).value);
}
/*DIV innerHTML属性函数 ##########*/
//参数以此为 对象ID,内容
function InnerHtml( objectId, objectContent ){
document.getElementById( objectId ).innerHTML = objectContent;
}
//修改对象class属性
function ChangeClass( objectId, classname){
document.getElementById( objectId ).className = classname;
}
//判断字符串中是否含有中文
function checkIsChinese(str)
{
//如果值为空,通过校验
//var pattern = /^([/u4E00-/u9FA5]|[/uFE30-/uFFA0])*$/gi;
var pattern = /[ /u4e00-/u9fa5]/;
if (pattern.test(str))
return true;
else
return false;
}
/*字符长度
属性依次为 对象ID,要求字符长度,错误提示
*/
function ChkLength( objectId, strLength ){
lengthChk=false;
objectAlert=objectId+"_alert"
str=document.getElementById( objectId ).value;
if ( str.length < strLength ){
lengthChk=true;
}
return lengthChk;
}
/*验证密码字符长度*/
function ChkPassword(objectId, strLength ){
chkPassword=true;
if ( ChkLength( objectId, strLength ) ){
InnerHtml( objectAlert, "密码不少于6位字符" );
chkPassword = false;
}else{
InnerHtml( objectAlert, "密码通过验证" );
}
ChangeClass( objectAlert, "chk_"+chkPassword);
if ( document.getElementById( objectId+"2" ).value != "" )
PasswordFlag( objectId+"2", objectId )
return chkPassword;
}
/*密码确认*/
/*参数依次为 确认密码,密码*/
function PasswordFlag( pass2, pass){
var chkPasswordFlag = true ;
psd=document.getElementById(pass).value;
psd2=document.getElementById(pass2).value;
psd2Alert=pass2+"_alert"
if (psd == psd2){
InnerHtml( psd2Alert, "确认密码正确" );
}else{
InnerHtml( psd2Alert, "确认密码不正确" );
chkPasswordFlag = false;
}
if ( ChkLength( pass2, 6 ) ){
InnerHtml( psd2Alert, "密码不少于6位字符" );
chkPasswordFlag = false;
}
ChangeClass( psd2Alert, "chk_"+chkPasswordFlag);
return chkPasswordFlag;
}
//是否包含指定字的验证
//参数依次为 需要验证的字符串,字符 用,隔开
function ChkChar( str, char ){
var chk=false;
var charArray= char.split(",");
var charArrayUbound= charArray.length;
for ( i=0; i<=charArrayUbound; i++ ){
if ( str.indexOf( charArray[ i ] ) != -1 ){
chk = true;
break;
}
}
return chk;
}
//用户名验证
function Chkuser( objectId )
{
chkUser = true;
user = document.getElementById( objectId ).value;
objectAlert=objectId+"_alert";
var reg = /^[0-9a-zA-Z]{4,20}$/;
if ( !reg.test( user ) )
{
InnerHtml( objectAlert, "只能是4-20位0-9和a-z的组合区分大小写" );
ChangeClass( objectAlert, "chk_false")
chkUser = false;
}
else
{
InnerHtml( objectAlert, "用户名正确" );
}
ChangeClass( objectAlert, "chk_"+chkUser);
return chkUser;
}
/*判断邮箱是否正确*/
function IsEmail( objectId ){
var chkEmail = true ;
var mail = document.getElementById( objectId ).value;
objectAlert=objectId+"_alert"
var reg = /^[0-9A-Za-z_/-]+@[0-9A-Za-z-]+(/.[a-zA-Z]+){1,}$/;
if ( !reg.test(mail) )
{
InnerHtml( objectAlert, "邮箱地址格式错误" );
chkEmail = false;
}
else
{
InnerHtml( objectAlert, "邮箱地址格式正确" )
}
ChangeClass(objectId+"_alert", "chk_"+chkEmail)
return chkEmail ;
}
//邮箱验证结束
//验证码验证
function ChkImg( objectId )
{
chkImg = true;
img = document.getElementById( objectId ).value;
objectAlert=objectId+"_alert";
var reg = /^[0-9]+$/;
if ( !reg.test( img ) )
{
InnerHtml( objectAlert, "只能是数字" );
ChangeClass( objectAlert, "chk_false")
chkImg = false;
}
else
{
InnerHtml( objectAlert, "验证码格式正确" );
}
ChangeClass( objectAlert, "chk_"+chkImg);
return chkImg;
}
//判断用户名是否存在
function UserExist( objectId )
{
if ( Chkuser( objectId ) ){
user = document.getElementById( objectId ).value;
Send( "GET", "yp.htm?ddc=check_yp&user="+user, true, objectId, "用户名已经存在", "用户名可以正常使用" );
}
}
//判断验证码是否正确
function ChkCode( objectId )
{
if ( ChkImg( objectId ) ){
var img = document.getElementById( objectId ).value;
Send( "GET", "yp.htm?ddc=check_img&img="+img, true, objectId, "验证码不正确", "验证码正确" );
}
}
//判断提示问题的答案是否填写;
function ChkAnswer( objectId )
{
var chkAnswer = false;
var objectAlert = objectId+"_alert";
var answer = document.getElementById( objectId ).value;
if ( ChkLength( objectId, 3 ) )
{
InnerHtml( objectAlert, "提示答案不小于3位字符" );
}
else
{
if ( !ChkChar( answer, "',-,&,*" ) )
{
InnerHtml( objectAlert, "提示答案正确" );
chkAnswer = true;
}
else
{
InnerHtml( objectAlert, "不能含有特殊字符/"'/",/"-/",/"&/",/"*/"" );
}
}
ChangeClass( objectAlert, "chk_"+chkAnswer);
return chkAnswer;
}
//判断公司名称是否填写
function ChkConame( objectId )
{
var chkConame = false;
var objectAlert = objectId+"_alert";
var coname = document.getElementById( objectId ).value;
if ( ChkLength( objectId, 4 ) )
{
InnerHtml( objectAlert, "公司名称不小于4位字符" );
}
else
{
if ( !ChkChar( coname, "',-,&,*" ) )
{
InnerHtml( objectAlert, "<font clor=green>正确</font>" );
chkConame = true;
}
else
{
InnerHtml( objectAlert, "不能含有特殊字符/"'/",/"-/",/"&/",/"*/"" );
}
}
ChangeClass( objectAlert, "chk_"+chkConame);
return chkConame;
}
//判断联系人是否为空
function ChkColxr( objectId )
{
var chkColxr = false;
var objectAlert = objectId+"_alert";
var colxr = document.getElementById( objectId ).value;
if ( ChkLength( objectId, 2 ) )
{
InnerHtml( objectAlert, "联系人不小于2位字符" );
}
else
{
if ( !ChkChar( colxr, "',-,&,*" ) )
{
InnerHtml( objectAlert, "正确" );
chkColxr = true;
}
else
{
InnerHtml( objectAlert, "不能含有特殊字符/"'/",/"-/",/"&/",/"*/"" );
}
}
ChangeClass( objectAlert, "chk_"+chkColxr);
return chkColxr;
}
//判断地址是否为空//
function ChkCoaddress( objectId )
{
var chkCoaddress = false;
var objectAlert = objectId+"_alert";
var coaddress = document.getElementById( objectId ).value;
if ( ChkLength( objectId, 4 ) )
{
InnerHtml( objectAlert, "地址不小于4位字符" );
}
else
{
if ( !ChkChar( coaddress, "',-,&,*" ) )
{
InnerHtml( objectAlert, "正确" );
chkCoaddress = true;
}
else
{
InnerHtml( objectAlert, "不能含有特殊字符/"'/",/"-/",/"&/",/"*/"" );
}
}
ChangeClass( objectAlert, "chk_"+chkCoaddress);
return chkCoaddress;
}
//判断电话是否为空//
function ChkCotel( objectId )
{
chkCotel = true;
cotel = document.getElementById( objectId ).value;
objectAlert=objectId+"_alert";
var reg = /^[0-9]+$/;
if ( !reg.test( cotel ) )
{
InnerHtml( objectAlert, "电话填写不正确" );
ChangeClass( objectAlert, "chk_false")
chkCotel = false;
}
else
{
InnerHtml( objectAlert, "电话填写正确" );
}
ChangeClass( objectAlert, "chk_"+chkCotel);
return chkCotel;
}
//检测电话区号//
function ChkCotelq( objectId )
{
chkCotelq = true;
cotelq = document.getElementById( objectId ).value;
objectAlert=objectId+"_alert";
var reg = /^[0-9]+$/;
if ( !reg.test( cotelq ) )
{
InnerHtml( objectAlert, "区号只能是数字" );
ChangeClass( objectAlert, "chk_false")
chkCotelq = false;
}
else
{
InnerHtml( objectAlert, "区号填写正确" );
}
ChangeClass( objectAlert, "chk_"+chkCotelq);
return chkCotelq;
}
//注册用户数据检测开始//
function ChkForm(){
chkForm = true;
if ( !Chkuser( "user" ) ){
return chkForm = false;
}else{
if ( document.getElementById( "user_chk" ).value == "false" ){
InnerHtml("user_alert", "用户名已经存在" );
ChangeClass("user_alert", "chk_false");
}else{
InnerHtml("user_alert", "用户名可以正常使用" );
ChangeClass("user_alert", "chk_true");
}
}
if ( !ChkPassword("pass", 6 ) ){
return chkForm = false;
}
if ( !PasswordFlag("pass2", "pass" ) ){
return chkForm = false;
}
if ( !ChkAnswer("answer" ) ){
return chkForm = false;
}
if(!ChkConame("coname")){
return chkForm = false;
}
if(!ChkColxr("colxr")){
return chkForm = false;
}
if(!ChkCotelq("cotelq")){
return chkForm = false;
}
if(!ChkCotel("cotel")){
return chkForm = false;
}
//邮件验证
if(!IsEmail("mail")){
return chkForm = false;
}
if ( !ChkCoaddress("coaddress" ) ){
return chkForm = false;
}
//验证码验开始
if ( !ChkImg( "img" ) ){
return chkForm = false;
}else{
if ( document.getElementById( "img_chk" ).value == "false" ){
InnerHtml("img_alert", "验证码不正确" );
ChangeClass("img_alert", "chk_false");
return chkForm = false;
}else{
InnerHtml("img_alert", "验证码正确!" );
ChangeClass("img_alert", "chk_true");
}
}
return chkForm;
}