多个文本框验证问题

  本篇博客讲解的问题是对上一篇博客实例分析的拓展。

一、问题描述

  1. 三个EditBox,允许1到6个英文字符或数字,按OK结束。

二、等价类划分

  1. 有效等价类:

           长度: 1到6

           字符: a-z, A-Z, 0-9

  2. 无效等价类:

           长度: 0,7

           字符: 英文/数字以外字符,控制字符,标点符号

三、实现方法

  同样的在该例中也是采用javascript来验证输入的字符串,由于是三个文本框,采用循环验证的方法并记录每一个文本框的验证结果,使用条件语句对每种结果进行判断并给出相应的提示。

四、测试用例

 

编号 输入 预期输出
1

String 1="123",

String 2="abc",

String 3="123abc"

全部正确
 2

String 1="",

String 2="abc",

String 3="123abc"

 框1格式错误
 3

String 1="123a!",

String 2="abc",

String 3="123abc"

 框1格式错误
 4

String 1="123",

String 2="",

String 3="123abc"

 框2格式错误
 5

String 1="123",

String 2="abc!",

String 3="123abc"

 框2格式错误
 6

String 1="123",

String 2="abc",

String 3=""

 框3格式错误
 7

String 1="123",

String 2="abc",

String 3="123a!"

 框3格式错误
 8

String 1="123!",

String 2="",

String 3="123abc"

 框1和框2格式错误
9

String 1="123!",

String 2="abc",

String 3="123abcd"

 框1和框3格式错误
10

String 1="123",

String 2="abc!",

String 3="123abcd"

 框2和框3格式错误
11

String 1="",

String 2="abc!",

String 3="123abcd"

 全部格式错误

五、源代码及部分测试结果图

 

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'index.jsp' starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22   
23   <body>
24   <center>
25     <p>允许1到6个英文字符或数字,按OK结束。</p>
26 <table border="0">
27 <tr><td>框1:</td><td><input id="demo1" type="text"></td></tr>
28 <tr><td>框2:</td><td><input id="demo2" type="text"></td></tr>
29 <tr><td>框3:</td><td><input id="demo3" type="text"></td></tr>
30 <tr><td></td><td align="center"><button type="button" onclick="check()">OK</button></td></tr>
31 </table>
32 <script>
33 function check()
34 {
35 var x;
36 var answer=new Array();
37 for(i=0;i<3;i++){
38 if(i==0)
39    x=document.getElementById("demo1").value;
40    else if(i==1)
41      x=document.getElementById("demo2").value;
42      else
43         x=document.getElementById("demo3").value;
44 if(x.length>=1&&x.length<=6)
45 {
46    if(x.match(/^([a-zA-Z0-9])*$/))//正则表达式用来表示英文或数字  
47       answer[i]=true;
48       else 
49          answer[i]=false;     
50 }
51 else{
52      answer[i]=false;
53    } 
54 }
55 if(answer[0]){
56   if(answer[1]){
57     if(answer[2]){
58        alert("全部正确");
59        return;
60     }else{
61        alert("框3格式错误");
62        return;
63     }
64   }else{
65     if(answer[2]){
66        alert("框2格式错误");
67        return;
68     }else{
69        alert("框2和框3格式错误");
70        return;
71     }
72   }
73 }else{
74   if(answer[1]){
75     if(answer[2]){
76        alert("框1格式错误");
77        return;
78     }else{
79        alert("框1和框3格式错误");
80        return;
81     }
82   }else{
83     if(answer[2]){
84        alert("框1和框2格式错误");
85        return;
86     }else{
87        alert("全部格式错误");
88        return;
89     }
90   }
91 }
92 }
93 
94 </script>
95 </center>
96   </body>
97 </html>