1.单行文本框应用
获得和失去焦点改变样式
添加样式:
<style type="text/css"> .focus { border: 1px solid #f00; background: #fcc; } </style>
具体实现:
<body> <form action="#" method="post" id="regForm"> <fieldset> <legend>个人基本信息</legend> <div> <label for="userName">名称:</label> <input type="text" id="userName" /> </div> <div> <label for="password">密码:</label> <input type="password" id="pass" /> </div> </fieldset> </form> <script type="text/javascript"> $(":input").focus(function(){ $(this).addClass("focus"); }).blur(function(){ $(this).removeClass("focus"); }); </script> </body>
2.多行文本框应用
● 高度变化
<body> <form> <div class="msg"> <div class="msg_caption"> <span class="bigger">放大</span> <span class="smaller">缩小</span> </div> <div> <textarea id="comment" rows="8" cols="30">jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写的更少,做的更多)。</textarea> </div> </div> </form> <script type="text/javascript"> var $comment = $("#comment"); $(".bigger").click(function(){ if($comment.height()<500){//如果高度小于500,每次点击高度增加50 $comment.height($comment.height()+50); } }); $(".smaller").click(function(){ if($comment.height()>50){//如果高度大于50,每次点击高度减少50 $comment.height($comment.height()-50); } }); </script> </body>
● 滚动条高度变化
3.复选框应用
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="../script/jquery-1.10.1.js"></script> <script type="text/javascript"> $(document).ready(function(){ //全选 $("#checkedAll").click(function(){ $("[name=items]:checkbox").attr("checked",true); }); //全不选 $("#checkedNo").click(function(){ $("[name=items]:checkbox").attr("checked",false); }); //反选 $("#checkedRev").click(function(){ $("[name=items]:checkbox").each(function(){//each() $(this).attr("checked",!$(this).attr("checked")); }); }); }); </script> <title>复选框应用</title> </head> <body> <form> 你爱好的运动是:<br /> <input type="checkbox" name="items" value="篮球">篮球<br /> <input type="checkbox" name="items" value="足球">足球<br /> <input type="checkbox" name="items" value="羽毛球">羽毛球<br /> <input type="checkbox" name="items" value="乒乓球">乒乓球<br /> <input type="button" id="checkedAll" value="全选" /> <input type="button" id="checkedNo" value="全不选" /> <input type="button" id="checkedRev" value="反选" /> <input type="button" id="send" value="提交" /><br /> </form> </body> </html>
如上的代码,我刚开始在IE9上执行的时候,全选、全不选,第一次点击的时候是能够正确执行的,但是第二次再点的时候就没有反应了。在IE8上就是完全正确的。哎,不得不感叹:IE不同版本间的差异真大啊。
使用复选框取代全选、全不选按钮并根据复选框是否全选更新该复选框checkedAll状态
思路:对复选框组绑定单击事件;定义一个变量flag,初始化为true;检查复选框组中的复选框是否全部选中,如果有没有被选中的,flag赋为false;根据flag的值来更新“checkedAll"的状态。
<body> <form> 你爱好的运动是:<br /> <input type="checkbox" name="items" value="篮球">篮球<br /> <input type="checkbox" name="items" value="足球">足球<br /> <input type="checkbox" name="items" value="羽毛球">羽毛球<br /> <input type="checkbox" name="items" value="乒乓球">乒乓球<br /> <input type="checkbox" id="checkedAll" value="全选/全不选">全选/全不选<br /> <input type="button" id="checkedRev" value="反选" /> <input type="button" id="send" value="提交" /><br /> </form> <script type="text/javascript"> //全选或者全不选 $("#checkedAll").click(function(){ if(this.checked){ $("[name=items]:checkbox").attr("checked",true); }else{ $("[name=items]:checkbox").attr("checked",false); } }); //反选 $("#checkedRev").click(function(){ $("[name=items]:checkbox").each(function(){//each() $(this).attr("checked",!$(this).attr("checked")); }); }); //检查是否全选以更新checkedAll状态 $("[name=items]:checkbox").click(function(){ var flag = true; $("[name=items]:checkbox").each(function(){ if(!this.checked){ flag = false; } }); $("#checkedAll").attr("checked",flag); }); </script> </body>
4.下拉列表框应用
选中添加到右边、全部添加到右边、双击添加到右边
<body> <div class="content"> <select multiple id="select_01" style="width:100px;height:160px"> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> <option value="4">选项4</option> <option value="5">选项5</option> <option value="6">选项6</option> </select> <div> <span id="add">选中添加到右边>></span> <span id="add_all">全部添加到右边>></span> </div> </div> <div class="content"> <select multiple id="select_02" style="width:100px;height:160px"> </select> <div> <span id="remove">选中删除到左边>></span> <span id="add_all">全部删除到左边>></span> </div> </div> <script type="text/javascript"> //选中添加到右边 $("#add").click(function(){ var $options = $("#select_01 option:selected"); $options.appendTo("#select_02"); }); //全部添加到右边 $("#add_all").click(function(){ var $options = $("#select_01 option"); $options.each(function(){ $(this).appendTo("#select_02"); }); }); //通过双击添加到右边 $("#select_01").dblclick(function(){ var $options = $("option:selected",this);//获得选中的选项 $options.appendTo("#select_02"); }); </script> </body>
我不明白为什么“var $options = $("option:selected",this);”这一句的“this”是个什么意思?没有功能是一样能够实现的。是不是jQuery选择器?
5.表单验证
用户名长度必须大于6;邮箱格式要正确;正则表达式。
<body> <form> <div class="int"> <label for="username">用户名:</label> <input type="text" id="username" class="required" /> </div> <div class="int"> <label for="email">邮箱:</label> <input type="text" id="email" class="required" /> </div> <div class="int"> <label for="info">资料:</label> <input type="text" id="info" /> </div> <div class="sub"> <input type="submit" id="send" value="提交" /> <input type="reset" id="res" value="重置" /> </div> </form> <script type="text/javascript"> //alert($("form :input.required").length); //在必填选项后追加”*” $("form :input.required").each(function(){//"form :input.required":form后面必须有个空格,否则找不到 //$(this).parent().append("<strong class='high'>*</strong>"); var $required = $("<strong class='high'>*</strong>"); $(this).parent().append($required); }); $("form :input.required").blur(function(){ var $parent = $(this).parent(); $parent.find(".formtips").remove();//删除以前的提示 if($(this).is("#username")){//验证姓名 var username = this.value;//此处如果不另外声明一个变量,会使#username被赋值true或false if(username="" || username.length<6){ var msg = "用户名不能为空并且长度要大于6个字符"; $parent.append("<strong class='formtips onError'>"+msg+"</strong>"); }else{ var msg = "输入正确"; $parent.append("<strong class='formtips onSuccess'>"+msg+"</strong>"); } } if($(this).is("#email")){//验证邮箱 var email = this.value; if(email="" || (!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(email))){ var msg = "请填写正确的邮箱"; $parent.append("<strong class='formtips onError'>"+msg+"</strong>"); }else{ var msg = "输入正确"; $parent.append("<strong class='formtips onSuccess'>"+msg+"</strong>"); } } }); //当点击提交时,校验必填项是否已经填写。如果没有,则阻止提交 $("#send").click(function(){ $("form :input.required").trigger("blur"); var errorLength = $("strong.onError").length; if(errorLength == 0){ alert("注册成功"); }else{ alert("你填写的信息有误"); return false; } }); </script> </body>