点击这里给我发消息 点击这里给我发消息

用JSP生成JavaScript代码实现表单校验

添加时间:2013-12-7
    相关阅读: 页面 程序 JavaScript JSP PHP AI

  主程序是名为 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+".val
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册