<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用 JSP 在客戶端生成 JavaScript 代碼來完成表單校驗

      [摘要]用 JSP 在客戶端生成 JavaScript 代碼來實現表單校驗●○●○●○●○●○●○●○●○●○●○●○●○●○●○○ 作者:劉湛   日期:2000-01-05   jeru@163.net...
      用 JSP 在客戶端生成 JavaScript 代碼來實現表單校驗

      ●○●○●○●○●○●○●○●○●○●○●○●○●○●○
      ○ 作者:劉湛   日期:2000-01-05   jeru@163.net ●
      ● http://www.cyberlabs.com/~jeru/          ○
      ○ 歡迎訪問爪哇人,獲取更多資料           ●
      ●○●○●○●○●○●○●○●○●○●○●○●○●○●○

      今天費了一天時間就是做這個東西,原理很簡單,就是用 JSP 在頁面的開始部分生成一段代碼,
      如 errorcheck.jsp 中所示,但程序太長,還是費了我不少時間來改寫。

      主程序是名為 ErrorCheck.java ,有了這個 ErrorCheck 的 Bean,我們就再也不用為了表單校驗去
      寫那一大堆煩人的 JavaScript 代碼了。ErrorCheck 類已幫我們生成了幾乎所有你將會用到的校驗方法,
      如是否為數字,長度的校驗,是否為合法email等,你只需在 jsp 頁面里調用相應的函數就可以了。

      目前一共有七個函數:

      一 檢測是否為數字
      //輸入輸入框名和錯誤提示信息
      numericCheck(String inputName,String errorMsg);

      二 檢測email是否合法
      //輸入輸入框名和錯誤提示信息
      emailCheck(String inputName,String errorMsg);

      三 檢測電話號碼是否合法
      //輸入輸入框名和錯誤提示信息
      telCheck(String inputName,String errorMsg);

      四 檢測字串長度是否在規定范圍那內
      //輸入輸入框名,錯誤提示信息,最小長度,最大長度
      lengthCheck(String inputName,String errorMsg,int min,int max);

      五 檢測字串中是否不含禁止的字串
      //輸入輸入框名,錯誤提示信息,禁止字串
      denyStrCheck(String inputName,String errorMsg,String str);

      六 檢測字串中是否含給定字串
      //輸入輸入框名,錯誤提示信息,指定字串
      stringCheck(String inputName,String errorMsg,String str);

      七 檢測日期格式是否為 "yyyy-mm-dd"
      //輸入輸入框名和錯誤提示信息
      dateCheck(String inputName,String errorMsg);

      只要調用一下這個bean,然后用setFromName()設定你的表單名,再調用以上函數,
      最后 out.println(yourID.ErrorCheckScript()),就輸出了一段 JavaScript 代碼了,當然了,
      別忘了這個 <form name=myForm onsubmit="return errorCheck();">

      ok,just enjoy it,今天太累,不想多少,有任何意見請寫信給我或在我主頁上留言。

      注:我調試 errorcheck.jsp 的時候因服務器的問題不知為何不能用 usebean,setProperty 的方法,
      只好 new 了一下,我想你們是應該可以用useBean和setProperty的,自己改一下吧。

      ===================================== errorcheck.jsp =====================================

      <%@ page language="java" import="dbclass.*" %>
      <%@ page contentType="text/html; charset=gb2312" %>
      <jsp:useBean id="cc" scope="page" class="dbclass.ErrorCheck" />

      <%
      ErrorCheck ec = new ErrorCheck();
      ec.setFormName("myForm");
      ec.numericCheck("number","The Number you input is invalid!");
      ec.emailCheck("email","The Email you input is invalid!");
      ec.telCheck("tel","The telephone you input is invalid!");
      ec.lengthCheck("strlen","The string you input in the fourth field in not between 6-8",6,8);
      ec.denyStrCheck("nojeru","The fifith field must not contain 'jeru'","jeru");
      ec.stringCheck("jeru","The sixth field must not null and contian 'jeru'","jeru");
      ec.dateCheck("date","The date you input is invalid,should be yyyy-mm-dd");
      out.println(ec.ErrorCheckScript());
      %>

      <html>
      <body style="font-size:9pt; font-family:Arial;">
      <h1>Errocheck Test</h1>
      <hr>
      <form name=myForm onsubmit="return errorCheck();">

      input a number:<br>
      <input type="text" name="number"><p>

      input a emial:<br>
      <input type="text" name="email"><p>

      input a telephone:<br>
      <input type="text" name="tel"><p>

      input a string (length should between 6-8):<br>
      <input type="text" name="strlen"><p>

      input a string (shoulde not contain "jeru"):<br>
      <input type="text" name="nojeru"><p>

      input a string (must contain "jeru"):<br>
      <input type="text" name="jeru"><p>

      input a date (yyyy-mm-dd):<br>
      <input type="text" name="date"><p>

      <br><input type="submit" name="submit" value="go">
      </form>
      </body>
      </html>

      ===================================== ErrorCheck.java =====================================

      package dbclass;
      /**
      * ErrorCheck v 1.0
      *
      * 這個類是用來在客戶端生成 JavaScript 代碼來校驗表單的
      * 原是版本是同事 Macro 用 PHP 寫的,我感覺十分好用,再也
      * 不用再為那些表單區寫煩人的 javascript 代碼拉,感謝他!
      * 這次我用 Java 改寫,封裝成一個類,并修復了少許的 bug,加
      * 多了一條校驗的功能,它的擴展性很好,以后可能會繼續完善。
      *
      * Mender :
      * Jeru Liu
      * Homepage :
      * http://www.cyberlabs.com/~jeru/
      * Email: jeru@163.net
      *
      */

      import java.io.*;

      public class ErrorCheck{

      /* public: the javascript string */
      String errorCheckStr;

      /* public: the form name you used */
      public String formName;

      public void setFormName(String formName) {
       this.formName = formName;
      }

      /***************************************************************************\
      *public: constructor functions
      *構造函數
      \***************************************************************************/
      public ErrorCheck(){
       this.errorCheckStr =
       "<script ID=clientEventHandlersJS language=javascript>" + "\n" +
       "<!--" + "\n";
       this.neededFunction();// load the needed functions
       this.errorCheckStr +=
       "function errorCheck() {" + "\n";
      }

      /***************************************************************************\
       *public: export javascript script
       *輸出 JAVASCRIPT 腳本
      \***************************************************************************/
      public String ErrorCheckScript(){
      this.errorCheckStr +=
      "}" + "\n" +
      "-->" + "\n" +
      "</script>" + "\n";
      return this.errorCheckStr;
      }

      /***************************************************************************\
       *public: check the numeric
       *檢查錄入框值是否是數字
      \***************************************************************************/
      public void numericCheck(String inputName, String errorMsg){
      this.errorCheckStr +=
      "if(fucCheckNUM(document."+formName+"."+inputName+".value) == 0) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check the length
       *檢查錄入框值的長度
      \***************************************************************************/
      public void lengthCheck(String inputName, String errorMsg, int MinLength, int MaxLength) {
      this.errorCheckStr +=
      "if(fucCheckLength(document."+formName+"."+inputName+".value)<"+MinLength+" " + "\n" +
      "fucCheckLength(document."+formName+"."+inputName+".value)>"+MaxLength+") {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check the email
       *檢查錄入框值是否是正確的EMAIL格式
      \***************************************************************************/
      public void emailCheck(String inputName, String errorMsg){
      this.errorCheckStr +=
      "if(chkemail(document."+formName+"."+inputName+".value) == 0) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check the telephone number
       *檢查錄入框值是否是電話號碼
      \***************************************************************************/
      public void telCheck(String inputName, String errorMsg){
      this.errorCheckStr +=
      "if(fucCheckTEL(document."+formName+"."+inputName+".value) == 0) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check if the input value contian the prefered string
       *檢查錄入框值是否是包含給定字串
      \***************************************************************************/
      public void stringCheck(String inputName, String errorMsg, String string){
      this.errorCheckStr +=
      "if(document."+formName+"."+inputName+".value.indexOf(\""+string+"\") != 0) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check if the input value contain the denyed string
       *檢查錄入框值是否是包含給禁止的字串
      \***************************************************************************/
      public void denyStrCheck(String inputName, String errorMsg, String string){
      this.errorCheckStr +=
      "if (document."+formName+"."+inputName+".value.length == 0 " + "\n" +
      "document."+formName+"."+inputName+".value.indexOf(\""+string+"\") != -1) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }

      /***************************************************************************\
       *public: check the YYYY-MM-DD format date
       *檢查錄入框值是否是YYYY-MM-DD的日期格式
      \***************************************************************************/
      public void dateCheck(String inputName, String errorMsg){
      this.errorCheckStr +=
      "if(chkdate(document."+formName+"."+inputName+".value) == 0) {" + "\n" +
      "alert(\""+errorMsg+".\");" + "\n" +
      "document."+formName+"."+inputName+".focus();" + "\n" +
      "return(false);" + "\n" +
      "}" + "\n\n";
      }


      public void neededFunction(){
      this.errorCheckStr += 
      "//函數名:fucCheckNUM" + "\n" +
      "//功能介紹:檢查是否為數字" + "\n" +
      "//參數說明:要檢查的數字" + "\n" +
      "//返回值:1為是數字,0為不是數字" + "\n" +
      "function fucCheckNUM(NUM) {" + "\n" +
      "var i,j,strTemp;" + "\n" +
      "strTemp=\"0123456789\";" + "\n" +
      "if ( NUM.length == 0) return 0;" + "\n" +
      "for (i=0;i<NUM.length;i++){" + "\n" +
      "j = strTemp.indexOf(NUM.charAt(i));" + "\n" +
      "if (j==-1) {" + "\n" +
      "//說明有字符不是數字" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "}" + "\n" +
      "//說明是數字" + "\n" +
      "return 1;" + "\n" +
      "}" + "\n\n" +

      "//函數名:fucCheckLength" + "\n" +
      "//功能介紹:檢查字符串的長度" + "\n" +
      "//參數說明:要檢查的字符串" + "\n" +
      "//返回值:長度值" + "\n" +
      "function fucCheckLength(strTemp) {" + "\n" +
      "var i,sum;" + "\n" +
      "sum=0;" + "\n" +
      "for(i=0;i<strTemp.length;i++) {" + "\n" +
      "if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))" + "\n" +
      "sum=sum+1;" + "\n" +
      "else" + "\n" +
      "sum=sum+2;" + "\n" +
      "}" + "\n" +
      "return sum;" + "\n" +
      "}" + "\n\n" +

      "//函數名:chkemail" + "\n" +
      "//功能介紹:檢查是否為Email Address" + "\n" +
      "//參數說明:要檢查的字符串" + "\n" +
      "//返回值:0:不是1:是" + "\n" +
      "function chkemail(a){" + "\n" +
      "var i=a.length;" + "\n" +
      "var temp = a.indexOf('@');" + "\n" +
      "var tempd = a.indexOf('.');" + "\n" +
      "if (temp > 1) {" + "\n" +
      "if ((i-temp) > 3) {" + "\n" +
      "if (tempd!=-1) {" + "\n" +
      "return 1;" + "\n" +
      "}" + "\n" +
      "}" + "\n" +
      "}" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n\n" +

      "//函數名:fucCheckTEL" + "\n" +
      "//功能介紹:檢查是否為電話號碼" + "\n" +
      "//參數說明:要檢查的字符串" + "\n" +
      "//返回值:1為是合法,0為不合法" + "\n" +
      "function fucCheckTEL(TEL) {" + "\n" +
      "var i,j,strTemp;" + "\n" +
      "strTemp=\"0123456789-()#\";" + "\n" +
      "if (TEL.length == 0) return 0;" + "\n" +
      "for (i=0;i<TEL.length;i++) {" + "\n" +
      "j=strTemp.indexOf(TEL.charAt(i));" + "\n" +
      "if (j==-1) {" + "\n" +
      "//說明有字符不合法" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "}" + "\n" +
      "//說明合法" + "\n" +
      "return 1;" + "\n" +
      "}" + "\n\n" +

      "//函數名:chkdate(YYYY-MM-DD)" + "\n" +
      "//功能介紹:檢查是否為日期" + "\n" +
      "//參數說明:要檢查的字符串" + "\n" +
      "//返回值:0:不是日期1:是日期" + "\n" +
      "function chkdate(datestr) {" + "\n" +
      "var lthdatestr" + "\n" +
      "if (datestr != \"\")" + "\n" +
      "lthdatestr= datestr.length ;" + "\n" +
      "else" + "\n" +
      "lthdatestr=0;" + "\n" +
      "var tmpy=\"\";" + "\n" +
      "var tmpm=\"\";" + "\n" +
      "var tmpd=\"\";" + "\n" +
      "//var datestr;" + "\n" +
      "var status;" + "\n" +
      "status=0;" + "\n" +
      "if ( lthdatestr== 0)" + "\n" +
      "return 0;" + "\n" +
      "for (i=0;i<lthdatestr;i++) {" + "\n" +
      "if (datestr.charAt(i)== '-') {" + "\n" +
      "status++;" + "\n" +
      "}" + "\n" +
      "if (status>2) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if ((status==0) && (datestr.charAt(i)!='-')) {" + "\n" +
      "tmpy=tmpy+datestr.charAt(i)" + "\n" +
      "}" + "\n" +
      "if ((status==1) && (datestr.charAt(i)!='-')) {" + "\n" +
      "tmpm=tmpm+datestr.charAt(i)" + "\n" +
      "}" + "\n" +
      "if ((status==2) && (datestr.charAt(i)!='-')) {" + "\n" +
      "tmpd=tmpd+datestr.charAt(i)" + "\n" +
      "}" + "\n" +
      "}" + "\n" +
      "year=new String (tmpy);" + "\n" +
      "month=new String (tmpm);" + "\n" +
      "day=new String (tmpd)" + "\n" +
      "if ((tmpy.length!=4) (tmpm.length>2) (tmpd.length>2)) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) ) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if (!((year % 4)==0) && (month==2) && (day==29)) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if ((month<=7) && ((month % 2)==0) && (day>=31)) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if ((month>=8) && ((month % 2)==1) && (day>=31)) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "if ((month==2) && (day==30)) {" + "\n" +
      "return 0;" + "\n" +
      "}" + "\n" +
      "return 1;" + "\n" +
      "}" + "\n\n";

      }

      /*public static void main(String[] args) {
      ErrorCheck ec = new ErrorCheck("testFrom");
      String script = ec.ErrorCheckScript();
      System.out.println(script);
      } */

      }


      日韩精品一区二区三区高清