javascript之表单操作

来源:互联网 发布:数据库如何使用boolean 编辑:程序博客网 时间:2024/06/05 09:43



[javascript]
view plaincopy在CODE上查看代码片派生到我的代码片
  1. $(function(){  
  2.         $(":input").focus(function(){  
  3.             $(this).addClass("focus");  
  4.             }).blur(function(){  
  5.                 $(this).removeClass("focus");  
  6.                 });  
  7.         })  
[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //全选  
  2. $("#CheckedAll").click(function(){  
  3.         //所有checkbox跟着全选的checkbox走。  
  4.         $('[name=items]:checkbox').attr("checked"this.checked );  
  5.         });  
  6. $('[name=items]:checkbox').click(function(){  
  7.         //定义一个临时变量,避免重复使用同一个选择器选择页面中的元素,提升程序效率。  
  8.         var $tmp=$('[name=items]:checkbox');  
  9.         //用filter方法筛选出选中的复选框。并直接给CheckedAll赋值。  
  10.         $('#CheckedAll').attr('checked',$tmp.length==$tmp.filter(':checked').length);  
  11.   
  12.         /* 
  13.         //一行做过多的事情需要写更多注释。复杂选择器还可能影响效率。因此不推荐如下写法。 
  14.         $('#CheckedAll').attr('checked',!$('[name=items]:checkbox').filter(':not(:checked)').length); 
  15.          */  
  16.         });  
  17. //输出值  
  18. $("#send").click(function(){  
  19.         var str="你选中的是:\r\n";  
  20.         $('[name=items]:checkbox:checked').each(function(){  
  21.             str+=$(this).val()+"\r\n";  
  22.             })  
  23.         alert(str);  
  24.         });  
  25. //全选  
  26. $("#CheckedAll").click(function(){  
  27.         if(this.checked){                //如果当前点击的多选框被选中  
  28.         $('input[type=checkbox][name=items]').attr("checked"true );  
  29.         }else{                                
  30.         $('input[type=checkbox][name=items]').attr("checked"false );  
  31.         }  
  32.         });  
  33. $('input[type=checkbox][name=items]').click(function(){  
  34.         var flag=true;  
  35.         $('input[type=checkbox][name=items]').each(function(){  
  36.             if(!this.checked){  
  37.             flag = false;  
  38.             }  
  39.             });  
  40.   
  41.         if( flag ){  
  42.         $('#CheckedAll').attr('checked'true );  
  43.         }else{  
  44.         $('#CheckedAll').attr('checked'false );  
  45.         }  
  46.         });  
  47. //输出值  
  48. $("#send").click(function(){  
  49.         var str="你选中的是:\r\n";  
  50.         $('input[type=checkbox][name=items]:checked').each(function(){  
  51.             str+=$(this).val()+"\r\n";  
  52.             })  
  53.         alert(str);  
  54.         });  
  55. //全选  
  56. $("#CheckedAll").click(function(){  
  57.         $('[name=items]:checkbox').attr('checked'true);  
  58.         });  
  59. //全不选  
  60. $("#CheckedNo").click(function(){  
  61.         $('[type=checkbox]:checkbox').attr('checked'false);  
  62.         });  
  63. //反选  
  64. $("#CheckedRev").click(function(){  
  65.         $('[name=items]:checkbox').each(function(){  
  66.             //此处用JQ写法颇显啰嗦。体现不出JQ飘逸的感觉。  
  67.             //$(this).attr("checked", !$(this).attr("checked"));  
  68.             //$(this).prop("checked", !$(this).prop("checked"));  
  69.   
  70.             //直接使用JS原生代码,简单实用  
  71.             this.checked=!this.checked;  
  72.             });  
  73.         });  
  74. //输出值  
  75. $("#send").click(function(){  
  76.         var str="你选中的是:\r\n";  
  77.         $('[name=items]:checkbox:checked').each(function(){  
  78.             str+=$(this).val()+"\r\n";  
  79.             })  
  80.         alert(str);  
  81.         });  
  82. })  
jQuery之前的版本都是使用attr()来访问对象的属性,但是有些时候,比如访问input的disable属性的时候,会有些问题,在有些浏览器只要写diable属性就可以,有些要写diable="disabled",从jQuery 1.6开始,jQuery提供了prop()来获取这些属性,只会返回true/false,

只添加属性名称该属性就会生效应该使用prop(),只存在true/false的属性应该使用prop(),例如disabled和check,应该使用prop()方法,而不是使用attr()方法。

添加星号:

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //<![CDATA[  
  2.     $(function(){  
  3.         //如果是必填的,则加红星标识.  
  4.         $("form :input.required").each(function(){  
  5.             var $required = $("<strong class='high'> *</strong>"); //创建元素  
  6.             $(this).parent().append($required); //然后将它追加到文档中  
  7.         });  
  8.     });  
  9. //]]>  

CDATA的意义

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. CDATA 内部的所有东西都会被解析器忽略。  
  2.   
  3. 假如文本中包含了大量的 "<" 和 "&" 字符 - 就像编程代码中经常出现的情况一样 - 那么这个 XML 元素就可以被定义为一个 CDATA 部分。  
  4.   
  5. CDATA 区段开始于 "<![CDATA[",结束于 "]]>":  
  6.   
  7. <script type="text/javascript">  
  8. <![CDATA[  
  9. function compare(a,b)  
  10. {  
  11. if (a < b)  
  12.    {alert("a小于b");}  
  13. else if (a>b)  
  14.    {alert("a大于b");}  
  15. else  
  16.    {alert("a等于b");}  
  17. }  
  18. ]]>  
  19. </script>  
  20.   
  21. 在上面的例子中,在 CDATA 区段中的所有东西都会被解析器忽略。  
  22.   
  23.   
  24. 关于 CDATA 区段的注释:  
  25.   
  26. CDATA 区段不能包含字符串 "]]>",所以,CDATA 区段的嵌套是不被允许的。  
  27.   
  28. 同时也需要确保在 "]]>" 字符串中没有空格或折行。  
  29.   
  30. 为什么要使用CDATA:  
  31.   
  32.        XHTML的第二个改变是使用CDATA段。XML中的CDATA段用于声明不应被解析为标签的文本(XHTML也是如此),这样就可以使用特殊字符,如小于(<)、大于(>)、和号(&)和双引号("),而不必使用它们的字符实体。考虑下面的代码:  
  33.   
  34. <script type="text/javascript">  
  35. function compare(a,b)  
  36. {  
  37. if (a < b)  
  38.    {alert("a小于b");}  
  39. else if (a>b)  
  40.    {alert("a大于b");}  
  41. else  
  42.    {alert("a等于b");}  
  43. }  
  44. </script>  
  45.   
  46. 这个函数相当简单,它比较数字a和b,然后显示消息说明它们的关系。但是,在XHTML中,这段代码是无效的,因为它使用了三个特殊符号,即小于、大于和双引号。要修正这个问题,必须分别用这三个字符的XML实体<、>和"替换它们:  
  47.   
  48. <script type="text/javascript">  
  49. function compare(a,b)  
  50. {  
  51. if (a <b)  
  52.    {alert("a小于b");}    
  53. else if (a>b)  
  54.    {alert("a大于b");}  
  55. else  
  56.    {alert("a等于b");}  
  57. }  
  58. </script>  
  59.   
  60. 这段代码存在两个问题。首先,开发者不习惯用XML实体编写代码。这使代码很难读懂。其次,在JavaScript中,这种代码实际上将视为有语法错,因为解释程序不知道XML实体的意思。用CDATA段即可以以常规形式(即易读的语法)编写JavaScript代码。正式加入CDATA段的方法如下:  
  61.   
  62. <script type="text/javascript">  
  63. <![CDATA[  
  64. function compare(a,b)  
  65. {  
  66. if (a < b)  
  67.    {alert("a小于b");}  
  68. else if (a>b)  
  69.    {alert("a大于b");}  
  70. else  
  71.    {alert("a等于b");}  
  72. }  
  73. ]]>  
  74. </script>  
  75.   
  76. 虽然这是正式方式,但还要记住,大多数浏览器都不完全支持XHTML,这就带来主要问题,即这在JavaScript中是个语法错误,因为大多数浏览器还不认识CDATA段。  
  77.   
  78. <script type="text/javascript">  
  79. //<![CDATA[                                              
  80. function compare(a,b)  
  81. {  
  82. if (a < b)  
  83.    {alert("a小于b");}  
  84. else if (a>b)  
  85.    {alert("a大于b");}  
  86. else  
  87.    {alert("a等于b");}  
  88. }  
  89. //]]>                                        
  90. </script>  
  91.   
  92. 当前使用的解决方案模仿了“对旧浏览器隐藏”代码的方法。使用单行的JavaScript注释"//",可在不影响代码语法的情况下嵌入CDATA段:  
  93.   
  94. 现在,这段代码在不支持XHTML的浏览器中也可运行。  
  95.   
  96. 但是,为避免CDATA的问题,最好还是用外部文件引入JavaScript代码。  

表单验证

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //<![CDATA[  
  2. $(function(){  
  3.         //如果是必填的,则加红星标识.  
  4.         $("form :input.required").each(function(){  
  5.             var $required = $("<strong class='high'> *</strong>"); //创建元素  
  6.             $(this).parent().append($required); //然后将它追加到文档中  
  7.         });  
  8.          //文本框失去焦点后  
  9.         $('form :input').blur(function(){  
  10.              var $parent = $(this).parent();  
  11.              $parent.find(".formtips").remove();  
  12.              //验证用户名  
  13.              if( $(this).is('#username') ){  
  14.                     ifthis.value=="" || this.value.length < 6 ){  
  15.                         var errorMsg = '请输入至少6位的用户名.';  
  16.                         $parent.append('<span class="formtips onError">'+errorMsg+'</span>');  
  17.                     }else{  
  18.                         var okMsg = '输入正确.';  
  19.                         $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');  
  20.                     }  
  21.              }  
  22.              //验证邮件  
  23.              if( $(this).is('#email') ){  
  24.                 ifthis.value=="" || ( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ) ){  
  25.                       var errorMsg = '请输入正确的E-Mail地址.';  
  26.                       $parent.append('<span class="formtips onError">'+errorMsg+'</span>');  
  27.                 }else{  
  28.                       var okMsg = '输入正确.';  
  29.                       $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');  
  30.                 }  
  31.              }  
  32.         }).keyup(function(){  
  33.            $(this).triggerHandler("blur");  
  34.         }).focus(function(){  
  35.              $(this).triggerHandler("blur");  
  36.         });//end blur  
  37.   
  38.           
  39.         //提交,最终验证。  
  40.          $('#send').click(function(){  
  41.                 $("form :input.required").trigger('blur');  
  42.                 var numError = $('form .onError').length;  
  43.                 if(numError){  
  44.                     return false;  
  45.                 }   
  46.                 alert("注册成功,密码已发到你的邮箱,请查收.");  
  47.          });  
  48.   
  49.         //重置  
  50.          $('#res').click(function(){  
  51.                 $(".formtips").remove();   
  52.          });  
  53. })  
  54. //]]>  
客户端的验证仅用于提升用户操作体验,对于禁用了脚本的用户和用户自制的网页提交操作,必须在服务器端验证.

表格变色

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. $(function(){  
  2. $("tbody>tr:odd").addClass("odd");  
  3. $("tbody>tr:even").addClass("even");  
  4. $('tbody>tr').click(function() {  
  5.     //判断当前是否选中  
  6.     var hasSelected=$(this).hasClass('selected');  
  7.     //如果选中,则移出selected类,否则就加上selected类  
  8.     $(this)[hasSelected?"removeClass":"addClass"]('selected')  
  9.         //查找内部的checkbox,设置对应的属性。  
  10.         .find(':checkbox').attr('checked',!hasSelected);  
  11. });  
  12. // 如果复选框默认情况下是选择的,则高色.  
  13. $('tbody>tr:has(:checked)').addClass('selected');  
  14. })  

表格展开关闭

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. $(function(){  
  2.     $('tr.parent').click(function(){   // 获取所谓的父行  
  3.             $(this)  
  4.                 .toggleClass("selected")   // 添加/删除高亮  
  5.                 .siblings('.child_'+this.id).toggle();  // 隐藏/显示所谓的子行  
  6.     }).click();  
  7. })  

表格过滤

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. $(function(){  
  2.      $("#filterName").keyup(function(){  
  3.      $("table tbody tr")  
  4.             .hide()  
  5.             .filter(":contains('"+( $(this).val() )+"')")  
  6.             .show();  
  7.   }).keyup();  
  8. })  



0 0
原创粉丝点击