parawork

jQuery对表单的操作

表单应用

  • 一个表单有3个基本组成部分:

  表单标签:包含处理表单数据所用的服务器端程序URL以及数据提交到服务器的方法
  表单域:包含文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等
  表单按钮:包括提交按钮、复位按钮和一般按钮。用于将数据传送到服务器上或者取消传送,还可以用来控制其他定义了处理脚本的处理工作。

  次主要讲解jQuery在表单域中的应用

  1. 单行文本框:单行文本框是表单域中最基本的元素,这次介绍——获取和失去焦点改变样式
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 5     <script type="text/javascript" src="../js/jquery-3.1.0.min.js"></script>
 6     <title>表单应用--单行文本框</title>
 7     <style type="text/css">
 8         /*伪类 :focus  IE6不支持除超链接元素之外的伪类选择器*/
 9         /*input:focus,textarea:focus{
10             border: 1px solid #FF0000;
11             background: #CCCCCC;
12         }*/
13         
14         /*添加.focus样式*/
15         .focus{
16             border: 1px solid #FF0000;
17             background: #CCCCCC;
18         }
19     </style>
20     </head>
21     <body>
22         <!--单行文本框应用-->
23         <form action="#" method="post" id="regFrom">
24             <fieldset>
25                 <legend>个人基本信息</legend>
26                 <div>
27                     <label for="username">名称:</label>
28                     <input id="username" type="text"/>
29                 </div>
30                 <div>
31                     <label for="password">密码:</label>
32                     <input id="password" type="password"/>
33                 </div>
34                 <div>
35                     <label for="msg">详细信息:</label>
36                     <textarea id="msg"></textarea>
37                 </div>
38             </fieldset>
39         </form>
40         
41         <script type="text/javascript">
42             $(function(){
43                 //单行文本框应用
44                 $(":input").focus(function(){ //添加获取焦点事件
45                     $(this).addClass("focus");
46                 }).blur(function(){ //失去焦点事件
47                     $(this).removeClass("focus");
48                 })
49             })
50         </script>
51     </body>
52 </html>
View Code

 

以上代码显示的结果是:文本框获取焦点后,边框颜色改变为红色,背景颜色为灰色;失去焦点后变为原来样式
网页效果为:

  2.多行文本框:这里主要是对某评论框高度进行设置

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 5     <script type="text/javascript" src="../js/jquery-3.1.0.min.js"></script>
 6     <title>表单应用--多行文本框--高度设置</title>
 7     </head>
 8     <body>
 9         <form>
10             <div class="msg">
11                 <div class="msg_caption">
12                     <span class="bigger">放大</span>
13                     <span class="smaller">缩小</span>
14                 </div>
15                 <div>
16                     <textarea id="comment" rows="8" cols="20">多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。多行文本框高度变化。</textarea>
17                 </div>
18             </div>
19         </form>
20         
21         <script type="text/javascript">
22             $(function(){
23                 //高度设置
24                 
25                 //单机“放大”按钮,如果评论框高度小于500,就在原有高度基础上加50;单机“缩小”按钮,如果评论框高度大于50,就在原有高度基础上减50;
26                 var $comment = $(\'#comment\');  //获取评论框
27                 $(\'.bigger\').click(function(){  //“放大”按钮绑定单机事件
28                     if($comment.height() < 500){
29                         //这里有可有两种写法
30                         //第一种
31                         //重新设置高度,在原有的基础上加50
32 //                        $comment.height($comment.height() + 50);
33 
34                         //第二种
35                         //使用自定义动画animate()方法,让高度在0.4秒内增大50px
36                         $comment.animate({height:"+=50"},400);
37                     }
38                 });
39                 $(\'.smaller\').click(function(){  //“放大”按钮绑定单机事件
40                     if($comment.height() > 50){
41                         //这里有可有两种写法
42                         //第一种
43                         //重新设置高度,在原有的基础上减50
44 //                        $comment.height($comment.height() - 50);
45                         
46                         //第二种
47                         //使用自定义动画animate()方法,让高度在0.4秒内缩小50px
48                         $comment.animate({height:"-=50"},400);
49                     }
50                 })
51             })
52         </script>
53     </body>
54 </html>
View Code

以上代码显示的结果是:单机“放大”按钮,如果评论框高度小于500,就在原有高度基础上加50;单机“缩小”按钮,如果评论框高度大于50,就在原有高度基础上减50;

网页效果为:

  3.复选应用框:对复选框进行,全选、反选、和全不选等操作。需要与选项挂钩,来达到各种联级反应

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 5     <script type="text/javascript" src="../js/jquery-3.1.0.min.js"></script>
 6     <title>表单应用--多行文本框--复选框应用</title>
 7     </head>
 8     <body>
 9         <form>
10             你爱好的运动是?<!--<br />-->
11             <input type="checkbox" id="CheckedAll" />全选/全不选<br />
12             <input type="checkbox" name="items" value="足球" />足球
13             <input type="checkbox" name="items" value="篮球" />篮球
14             <input type="checkbox" name="items" value="羽毛球" />羽毛球
15             <input type="checkbox" name="items" value="橄榄球" />橄榄球<br />
16             <!--<input type="button" id="CheckedAll" value="全   选" />
17             <input type="button" id="CheckedNo" value="全不 选" />-->
18             <input type="button" id="CheckedRev" value="反   选" />
19             <input type="button" id="send" value="提   交" />
20         </form>
21         
22         <script type="text/javascript">
23             $(function(){
24                 
25                 //反选
26                 //循环每一个复选框进行设置,取他们的反值;是true,就设置为false;是false,就设置为true
27                 //可使用非运算符“!”
28                 $("#CheckedRev").click(function(){
29                     $(\'[name=items]:checkbox\').each(function(){
30                         this.checked = !this.checked;
31                     })
32                 })
33                 
34                 //提交
35                 //输出选中的项
36                 $("#send").click(function(){
37                     var str = "你选中的是:\r\n";
38                     $(\'[name=items]:checkbox:checked\').each(function(){
39                         str += $(this).val()+"\r\n";
40                     });
41                     alert(str);
42                 })
43                 
44                 //全选/全不选
45                 $("#CheckedAll").click(function(){
46                     if(this.checked){  //如果当前单机的复选框被选中
47                         $(\'[name=items]:checkbox\').attr(\'checked\',true);
48                     }else{
49                         $(\'[name=items]:checkbox\').attr(\'checked\',false);
50                     }
51                 })
52                 
53             })
54         </script>
55     </body>
56 </html>
View Code

网页效果:这里网页效果显示需要手动操作才能清楚的看到效果,可以粘贴代码到自己的项目中进行展示

  4.下拉框应用:在网页上增加两个下拉框,分别加上两个按钮,进行添加删除

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 5     <script type="text/javascript" src="../js/jquery-3.1.0.min.js"></script>
 6     <title>表单应用--多行文本框--下拉框应用</title>
 7     </head>
 8     <body>
 9             <div class="centent">
10             <select multiple id="select1" style="width: 100px;height: 160px;">
11                 <option value="1">选项1</option>
12                 <option value="2">选项2</option>
13                 <option value="3">选项3</option>
14                 <option value="4">选项4</option>
15                 <option value="5">选项5</option>
16                 <option value="6">选项6</option>
17                 <option value="7">选项7</option>
18                 <option value="8">选项8</option>
19             </select>
20             <div>
21                 <span id="add">选中添加到右边&gt;&gt;</span>
22                 
23             </div>
24             <div>
25                 <span id="add_all">全部添加到右边&gt;&gt;</span>
26             </div>
27         </div>
28         <div class="centent">
29             <select multiple id="select2" style="width: 100px;height: 160px;">
30                 
31             </select>
32             <div>
33                 <span id="del">&lt;&lt;选中删除到左边</span>
34                 
35             </div>
36             <div>
37                 <span id="del_all">&lt;&lt;全部删除到左边</span>
38             </div>
39         </div>
40         
41         <script type="text/javascript">
42             $(function(){
43                 //将左边的选中项添加到右边
44                 $(\'#add\').click(function(){
45                     var $options = $(\'#select1 option:selected\');
46 //                    var $remove = $options.remove();
47 //                    $remove.appendTo(\'#select2\');
48                     $options.appendTo(\'#select2\');
49                 });
50                 //将右边的选中项添加到左边
51                 $(\'#del\').click(function(){
52                     var $options = $(\'#select2 option:selected\');
53                     
54                     //复杂写法
55 //                    var $remove = $options.remove();
56 //                    $remove.appendTo(\'#select1\');
57 
58                     //简单写法
59                     $options.appendTo(\'#select1\');
60                 });
61                 
62                 //双击左边选项添加到对方
63                 $(\'#select1\').dblclick(function(){
64                     var $options = $(\'option:selected\',this);
65                     $options.appendTo(\'#select2\');
66                 })
67                 //双击右边选项添加到对方
68                 $(\'#select2\').dblclick(function(){
69                     var $options = $(\'option:selected\',this);
70                     $options.appendTo(\'#select1\');
71                 })
72                 
73                 //将左边全部选项添加给对方
74                 $(\'#add_all\').click(function(){
75                     var $options = $(\'#select1 option\');
76                     $options.appendTo(\'#select2\');
77                 })
78                 //将右边全部选项添加给对方
79                 $(\'#del_all\').click(function(){
80                     var $options = $(\'#select2 option\');
81                     $options.appendTo(\'#select1\');
82                 })
83             })
84         </script>
85     </body>
86 </html>
View Code

网页效果:这里就不在一一展示网页效果显示了,如果需要,可以粘贴代码到自己的项目中进行展示
  
5.表单验证:表单作为HTML最重要的一个组成部分,几乎在每个网页上都有体现,例如:用户提交信息。对此来进行简单验证

 1 <!DOCTYPE html>
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <script src="../js/jquery-3.1.0.min.js" type="text/javascript"></script>
 5     <title>表单应用--多行文本框--表单验证</title>
 6 </head>
 7 <body>
 8     <form method="post" action="">
 9     <div class="int">
10         <label for="username">
11             用户名:</label>
12         <input type="text" id="username" class="required" />
13     </div>
14     <div class="int">
15         <label for="email">
16             邮箱:</label>
17         <input type="text" id="email" class="required" />
18     </div>
19     <div class="int">
20         <label for="personinfo">
21             个人资料:</label>
22         <input type="text" id="personinfo" />
23     </div>
24     <div class="sub">
25         <input type="submit" value="提交" id="send" /><input type="reset" id="res" />
26     </div>
27     </form>
28     
29     <script type="text/javascript">
30         $(function () {
31             //如果是必填的,则加红星标识.
32             $("form :input.required").each(function () {
33                 var $required = $("<strong class=\'high\'> *</strong>"); //创建元素
34                 $(this).parent().append($required); //然后将它追加到文档中
35             });
36             
37             //文本框失去焦点后
38             $(\'form :input\').blur(function () { //为表单添加失去焦点事件
39                 var $parent = $(this).parent();
40                 $parent.find(".formtips").remove(); //删除以前的提醒元素
41                 
42                 //验证用户名
43                 if ($(this).is(\'#username\')) {
44                     if (this.value == "" || this.value.length < 6) {  //用if进行判断,用户名长度是否小于6
45                         var errorMsg = \'请输入至少6位的用户名.\';
46                         $parent.append(\'<span class="formtips onError">\' + errorMsg + \'</span>\');
47                     } else {
48                         var okMsg = \'输入正确.\';
49                         $parent.append(\'<span class="formtips onSuccess">\' + okMsg + \'</span>\');
50                     }
51                 }
52                 //验证邮件
53                 if ($(this).is(\'#email\')) {   
54                     if (this.value == "" || (this.value != "" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))) {  //用if进行判断,邮箱格式是否符合
55                         var errorMsg = \'请输入正确的E-Mail地址.\';
56                         $parent.append(\'<span class="formtips onError">\' + errorMsg + \'</span>\');
57                     } else {
58                         var okMsg = \'输入正确.\';
59                         $parent.append(\'<span class="formtips onSuccess">\' + okMsg + \'</span>\');
60                     }
61                 }
62             }).keyup(function () {  //用户每次松开按键时触发
63                 $(this).triggerHandler("blur");
64             }).focus(function () {  //用户得到焦点时触发
65                 $(this).triggerHandler("blur");
66             }); //end blur
67 
68 
69             //提交,最终验证。
70             $(\'#send\').click(function () {  //为提交按钮绑定click事件
71                 $("form :input.required").trigger(\'blur\');   //触发blur事件
72                 var numError = $(\'form .onError\').length;
73                 if (numError) {
74                     return false;
75                 }
76                 alert("注册成功,密码已发到你的邮箱");
77             });
78 
79             //重置
80             $(\'#res\').click(function () {
81                 $(".formtips").remove();
82             });
83         })
84 //]]>
85     </script>
86 </body>
87 </html>
View Code

 

网页效果:

 

分类:

技术点:

相关文章: