1. 程式人生 > >jsp+ajax實現無重新整理滑鼠離開文字框即驗證使用者名稱

jsp+ajax實現無重新整理滑鼠離開文字框即驗證使用者名稱

歡迎大牛提意見大笑

jsp+ajax實現無重新整理,滑鼠離開文字框即驗證使用者名稱,操作如下:新建一個輸入頁面,起名為input.jsp,
 
[java]  
<%@ page contentType="text/html; charset=utf-8"%>  
<html>  
    <head>  
        <title>jsp+ajax實現無重新整理_滑鼠離開文字框即驗證使用者名稱</title>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
        <style type="text/css">  
        .style1 {  
            color: #FF3333;  
            font-weight: bold;  
        }  
          
        .style14 {  
            font-size: 13px  
        }  
          
        .text12black {  
            font-size: 12px;  
        }  
        </style>  
    </head>  
    <body bottomMargin="0" leftMargin="0" topMargin="0" rightMargin="0"  
        marginheight="0" marginwidth="0">  
        <table width="748" border="0" align="center" cellpadding="0"  
            cellspacing="0">  
            <tr>  
                <td height="5"></td>  
            </tr>  
        </table>  
        <script language="javascript">  
   //建立XMLHttpRequest物件   
 function GetO()  {   
   var ajax=false;   
    try     {   
     ajax = new ActiveXObject("Msxml2.XMLHTTP");   
    }   
    catch (e)     {   
      try       {   
       ajax = new ActiveXObject("Microsoft.XMLHTTP");   
      }   
      catch (E)       {   
       ajax = false;   
      }   
    }   
    if (!ajax && typeof XMLHttpRequest!='undefined')     {   
     ajax = new XMLHttpRequest();   
    }   
    return ajax;   
 }   
   
 function getMyHTML(serverPage, objID) {   
   var ajax = GetO();   
    //得到了一個html元素,在下面給這個元素的屬性賦值   
  var obj = document.all[objID];   
    //設定請求方法及目標,並且設定為非同步提交   
 ajax.open("post", serverPage, true);   
 ajax.onreadystatechange = function()  {   
    if (ajax.readyState == 4 && ajax.status == 200)     {   
    //innerHTML是HTML元素的屬性,如果您不理解屬性那就理解為HTML元素的變數   
    //ajax.responseText是伺服器的返回值,把值賦給id=passport1的元素的屬性   
    //innerHTML這個屬性或說這個變量表示一組開始標記和結束標記之間的內容   
     obj.innerHTML = ajax.responseText;   
    }   
   }   
    //傳送請求   
 ajax.send(null);   
   }   
   function CheckName()    {   
    //多個引數驗證[自己假設的,還未驗證]
    //  url:"isExistCompany.do?company.companyName="+companyName+"&t="+new Date(),
      getMyHTML("check.jsp?groupName="+name_form.group_name.value, "passport1");   
   }   
   //這個函式的作用是當用戶的焦點從其他地方回到group_name這個輸入框時再給屬性賦回原內容   
 function sl(tx)    {   
    if(tx=='passport1')   {   
      document.all[tx].innerHTML = "<div class='reds' align='left'>4-20 個字元 (包括大小寫字母,中文,數字,特殊字元等) 1個漢字等於2個字元,建議使用中文。註冊後不可修改。</div>";   
     }   
   }  
  
</script>  
        <form name="name_form" method=post>  
            <table width="60%" height="80" align="center" border="1" bordercolor="#96D6E8"  
                class="text12black">  
                <tr>  
                    <td width="22%" height="20" align="right">  
                        使用者名稱:  
                    </td>  
                    <td width="61%" align="left">  
                        <INPUT name="group_name" type="text" value="" size=30  style="float:left"
                            maxlength="50" onBlur="javaScript:CheckName();"  
                            onFocus="return sl('passport1');" />  
                        <br />  
                        <div id="passport1" style="color: red"></div>  
                    </td>  
                    <td id="passport2" valign="top">  
                        <div class="explain_blue" align='left'>  
                            <span class="gray">4-20 個字元 (包括大小寫字母,中文,數字,特殊字元等)  
                                1個漢字等於2個字元,建議使用中文暱稱。註冊後不可修改。</span>  
                        </div>  
                    </td>  
                </tr>  
            </table>  
        </form>  
    </body>  
</html>  
在新建一個校驗頁面,起名為check.jsp,程式碼如下:
 
[java]  
<%@ page contentType="text/html; charset=utf-8"%>  
<%  
    String action = "";  
    String groupname = "";  
    //檢查使用者名稱  
  
    //用作資料庫聯接,可以根據你的情況修改,如果為測試可以不用*作記號的語句   
  
    try {  
  
        action = request.getParameter("action");  
        groupname = request.getParameter("groupName").trim();
        // groupname=new String(request.getParameter("groupName").getBytes("iso8859-1"),"gb2312");//解決中文顯示亂碼問題
         
        if ("".equals(groupname)) {  
            out.println("<div class='reds' align='left'>使用者名稱不能為空!</div>");  
        } else if (groupname.length() < 4 || groupname.length() > 20) {  
            out.println("<div class='reds' align='left'>使用者名稱"  
                    + groupname + "不合法!(長度為4到20位,且不能使用?#=等特殊字元)</div>");  
        } else if ("zhangsan".equals(groupname)) {  
  
            out.println("<div class='reds' align='left'>" + "使用者名稱"  
                    + groupname + "已被佔用,請重新輸入!</div>");  
        } else {  www.2cto.com
            out.println("您的使用者名稱可用");  
        }  
  
    } catch (Exception e) {  
        System.out.println(request.getServletPath() + " error : "  
                + e.getMessage());  
    }  
%>  
 
兩個div並層<div>
<div style="float:left">左邊的第一個層</div>
<div style="float:left">並排的層</div>
</div>