js表单建立必填字段

在填写表单时可能希望用户必须填写某些字段或者两段填写的字段相匹配,然后才能提交表单,这里就可以用js来实现

  下面是建立一个基础表单的HTML代码

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset = "utf-8">
 5     <title>Password check</title>
 6     <link rel="stylesheet" type="text/css" href="p6_3.css">
 7     <script src="p6_3.js"></script>
 8 </head>
 9 <body>
10     <form action="#">
11         <p><label for="userName">Your name:<input type="text" size="30" id="userName" class="reqd"></label></p>
12
13         <p><label for="passewd1">Choose a password:<input type="password" id="password1" class="reqd"></label></p>
14
15         <p><label for="password2">Verify your password:<input type="password" id="password2" class="reqd passwd1"></label></p>
16
17         <input type="submit" value="Submit">&nbsp;<input type="reset" value="reset">
18     </form>
19 </body>
20 </html>

  以下是添加的简单CSS代码:

    

 1 body{
 2     color: #000;
 3     background-color: #fff;
 4     font-family: verdana;
 5     font-style: italic;
 6 }
 7
 8 input.invalid{
 9     background-color: #ff9;
10     border:2px red inset;
11 }
12
13 label.invalid{
14     color: #f00;
15     font-weight: bold;
16 }

  以下是js代码(是js基础教程上的,感觉有些复杂,应该是可以简单的,不过里面的逻辑值得学习下):

  

 1 window.onload = initForm;
 2
 3 function initForm(){
 4     for(var i=0; i<document.forms.length; i++){
 5         document.forms[i].onsubmit = validForm;//当要提交表单时调用validForm函数
 6                                                //如果返回false则不将表单提交给相应的CGI
 7     }
 8 }
 9 function validForm(){
10     var allTags = document.getElementsByTagName("*");//获取所有的元素
11     var allGood = true;//定义一个标志作为函数返回值
12
13     for(var i=0;i<allTags.length;i++){
14
15         if(!validTag(allTags[i])){  //用For循环一个个标签用validTags检验
16
17             allGood = false;        //如果检验返回值为false 说明有问题,标志也设为false
18         }
19     }
20
21     return allGood; //最后返回allGood
22
23     function validTag(thisTag){
24         var outClass = "";
25
26         var allClass = thisTag.className.split(" ");//split(" ")函数根据空格号分隔字符串为一个个小的字符串,比如"hello world"就会变为"hello" "world"
27         if(allClass.length>1){
28             for(var i=0;i<allClass.length;i++){ //将由一个元素类名得到的小的字符串分别去验证
29                 alert(allClass[i]);             //这里是用于测试看看每次点击提交后类名都发生了什么变化
30             }
31             alert("over");
32         }                                        //以上的For循环刚开始不用管
33
34         for(var j=0 ; j<allClass.length ; j++){
35             outClass += validBasis(allClass[j])+" ";//用validBasis验证,返回的新类名后面都加空格
36         }
37         thisTag.className = outClass;
38         if(outClass.indexOf("invalid") > -1){ //如果类名中有invalid证明有问题
39             invalidLabel(thisTag.parentNode);
40             this.focus();            //获得焦点
41             if(thisTag.nodeName == "INPUT"){
42                 thisTag.select(); //如果是input标签则选择它的值让用户更易修改
43             }
44             return false;
45         }
46
47         return true;
48
49
50         function validBasis(thisClass){
51
52             var classBack = "";
53             switch(thisClass){
54                 case "":
55                 case "invalid":
56                     break;
57                 case "reqd":
58                     /*alert("hello");*/
59                     if(allGood && thisTag.value == ""){
60
61                         classBack = "invalid ";//注意这里的空格!
62
63                     }
64
65                     classBack += thisClass;//保证不丢失原来类名,这样多次点击就不会失效
66                     break;
67                 default:
68                     if(allGood && !crossCheck(thisTag,thisClass)){
69                         classBack = "invalid ";
70                     }
71                     classBack += thisClass;
72
73             }
74             return classBack;
75         }
76
77         function crossCheck(inTag,otherFieldId){//最后验证两次输入的密码是否一致
78             if(!document.getElementById(otherFieldId)){
79                 return false;
80             }
81             return(inTag.value == document.getElementById(otherFieldId).value);
82         }
83
84         function invalidLabel(parentTag){
85             if(parentTag.nodeName == "LABEL"){
86                 parentTag.className += " invalid";
87             }
88         }
89     }
90 }

  要点:这里用到了一个字符串分割函数split(),比如var str="hello world",str1 = str.split(" "), str1最后可以得到一个字符串数组{"hello","world"},所以可以看到"invalid "里都加了空格。这样就可以保存元素的多个类名,当用户多次点击提交时能够得到正常处理

  

时间: 2024-08-02 21:49:55

js表单建立必填字段的相关文章

PHP 表单验证 - 必填字段

-------------------------------------------------------------------------- 本节展示如何制作必填输入字段,并创建需要时所用的错误消息. -------------------------------------------------------------------------- PHP - 输入字段 从上一节中的验证规则中,我们看到 "Name", "E-mail" 以及 "G

表单验证必填项

在表单验证中,会有一些必填项,如手机号,密码,昵称,验证码等,如果某项为空,或格式不正确表单将无法提交.在此我只做了手机号和密码的验证,其他的与此类此 html代码: <form action="" onsubmit="return check_sub()"> <p class="tel"> <label for="tel">手机</label> <input type=&

php基础教程——表单验证(必填、提交后数据保留)

一.表单验证中用到的几个元素记录 1.htmlspecialchars(),用于将用户输入的特殊字符转义为普通字符,比如 < 和 > 之类的 HTML 字符会被替换为 < 和 > 2.$_SERVER["PHP_SELF"] 是一种超全局变量,返回当前页面脚本名字 3.trim()用于删除多余的空格等 4.stripslashes()用于删除用户多输入的反斜线 二.一个简单的表单验证函数 function test_input($str){ $str = tri

jquery.validation.js 表单验证

jquery.validation.js 表单验证 官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 一导入js库 <script src="../js/jquery.js" type="text/javascript"></script> <script src="../js/jq

Jquery.validate.js表单验证插件的使用

作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例讲解应用.it's perfect. 首先记录一些使用过程中,爱犯的错误: 1>忘记给表单form添加id属性 2>input这些表单标签必须id属性和name属性名字一样.例如:<input type="text" id="name" name=&q

angular js 表单验证

1 <!doctype html> 2 <html ng-app="myapp"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 body{ 8 padding: 50px; 9 font-family: "微软雅黑"; 10 } 11 input{ 12 margi

js表单验证与void

JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. 1)必填项目验证 下面的函数用来检查用户是否已填写表单中的必填(或必选)项目.假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题): <!DOCTYPE html> <html> <head> <script> function validateForm() { var x=document.f

简单的js表单验证框架

/** * 通常在我们的HTML页面表单中有大量的数据验证工作, * 免不了要写很多验证表单的js代码,这是一项非常繁琐 * 枯燥的工作.很多程序员也会经常遗漏这项工作.当然 * 一些JavaEE框架中有一些比较好的验证框架提供给我们 * 使用,但是也是需要很多繁琐的配置,页面查看起来也 * 不是很方便.一般程序员使用的也不多.所以写了这一 * 段JavaScript代码提供给大家使用.算是一个简单的 * JavaScript验证框架吧.使用起来很简单,配合下面几 * 种标签使用,能实现大多数表

Bootstrap历练实例:表单控件状态(禁用的字段集fieldset)

禁用的字段集 fieldset 对 <fieldset> 添加 disabled 属性来禁用 <fieldset> 内的所有控件. <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Bootstrap历练实例:表单控件状态(禁