jQuery中的表单

表单一般分为3部分:表单标签、表单域与表单按钮

1、单行文本框

获得或失去焦点改变样式

CSS代码:

input:focus,textarea:focus { 
	 border: 1px solid #f00;
	 background: #fcc;
} 

但IE6不支持除超链接元素之外的:hover伪类选择器,可以通过jQuery实现同样的效果。

首先添加css样式

.focus { 
	 border: 1px solid #f00;
	 background: #fcc;
} 

jQuery添加获得/失去焦点事件

$(":input").focus(function(){
	$(this).addClass("focus");
}).blur(function(){
	$(this).removeClass("focus");
})

2、多行文本框

2.1 高度变化     动画效果优于height()方法的效果

height()方法   $(element).height($(element).height+50);

动画方法$(element).animate({height:"+=50px"},400);    //注意判断文本框是否处于动画状态

2.2 滚动条高度变化    控制多行文本框的滚动条的变化,使文本框内的内容滚动
scrollTop属性

$(element).animate({scrollTop:"+=50px"},400); 

3、复选框应用

对复选框的全选、反选、全不选等操作

<form>
	<input type="checkbox" name="items" value="足球">足球
	<input type="checkbox" name="items" value="篮球">篮球
	<input type="checkbox" name="items" value="羽毛球">羽毛球
	<input type="checkbox" name="items" value="乒乓球">乒乓球
	<input type="checkbox" id="Checked" value="全选/全不选">全选/全不选
	<input type="button" id="CheckedAll" value="全选">
	<input type="button" id="CheckedNo" value="全不选">
	<input type="button" id="CheckedRev" value="反选">
	<input type="button" id="submit" value="提交">
</form>

jQuery代码:

//全选
$("#CheckedAll").click(function(){
	$("[name=items]:checkbox").attr("checked",true);
})
//全不选
$("#CheckedNo").click(function(){
	$("[name=items]:checkbox").attr("checked",false);
})
//合并全选与全不选
// $("#Checked").click(function(){
// 	if (this.checked) {
// 		$("[name=items]:checkbox").attr("checked",true);
// 	}else {
// 		$("[name=items]:checkbox").attr("checked",false);
// 	}
// })
//全选与全不选优化
$("#Checked").click(function(){
	$("[name=items]:checkbox").attr("checked",this.checked);
})
// $("#[name=items]:checkbox").click(function(){
// 	var flag = true;
// 	$("[name=items]:checkbox").each(function(){
// 		if(!this.checked){
// 			flag = false;
// 		}
// 	});
// 	$("#Checked").attr("checked",flag);
// })
$("#[name=items]:checkbox").click(function(){
	var $tmp = $("[name=items]:checkbox");
	$("#Checked").attr("checked",$tmp.length==$tmp.filter(":checked").length);
})
//反选
$("#CheckedRev").click(function(){
	$("[name=items]:checkbox").each(function(){
		// $(this).attr("checked",!$(this).attr("checked"));
		this.checked = !this.checked;	//javascript方法
	});
})
//提交
$("#submit").click(function(){
	var str = "checked:\r";
	$("[name=items]:checkbox:checked").each(function(){
		str += $(this).val()+"\r";
	})
	alert(str);
})

4、下拉框应用

$('#add').click(function() {
	//获取全部的选项,删除并追加给对方
	$('#select1 option:selected').appendTo('#select2');
});

$('#add_all').click(function() {
	//获取全部的选项,删除并追加给对方
	$('#select1 option').appendTo('#select2');
});
//双击选项
$('#select1').dblclick(function(){ //绑定双击事件
	//获取全部的选项,删除并追加给对方
	$("option:selected",this).appendTo('#select2'); //追加给对方
});
5、表单验证
表单验证是网站管理者与浏览者沟通的桥梁。如:用户提交信息、用户查询信息、用户反馈信息

表单中class属性为“required”为必填项。即该项文本框后面红星标识

//如果是必填的,则加红星标识.
$("form :input.required").each(function(){
	var $required = $("<strong class='high'> *</strong>"); //创建元素
	$(this).parent().append($required); //然后将它追加到文档中
});

HTML代码:

<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>

验证表单元素,比如用户名、邮箱是否符合验证规则

  • 判断当前失去焦点的元素是用户名还是邮箱,然后分别处理
  • 用户名验证
  • 邮箱验证
  • 将提醒信息追加到当前元素的父元素的后面

注意每次失去焦点后,都会创建一个新的提醒信息,所以在需要创建提醒元素之前,将当前元素之前创建的提醒信息删除掉,可以通过remove()方法实现。

//文本框失去焦点后
$('form :input').blur(function(){  // 为表单元素添加失去焦点事件
	 var $parent = $(this).parent();
	 $parent.find(".formtips").remove(); //去掉先前的提醒
	 //验证用户名
	 if( $(this).is('#username') ){
			if( this.value=="" || this.value.length < 6 ){
			    var errorMsg = '请输入至少6位的用户名.';
                $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
			}else{
			    var okMsg = '输入正确.';
			    $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
			}
	 }
	 //验证邮件
	 if( $(this).is('#email') ){
		if( this.value=="" || ( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ) ){
              var errorMsg = '请输入正确的E-Mail地址.';
			  $parent.append('<span class="formtips onError">'+errorMsg+'</span>');
		}else{
              var okMsg = '输入正确.';
			  $parent.append('<span class="formtips onSuccess">'+okMsg+'</span>');
		}
	 }
})

提交验证

<div class="sub">
	<input type="submit" value="提交" id="send"/><input type="reset" id="res"/>
</div>

为使表单填写准确,在表单提交之前,需要对表单的必填项进行一次整体的验证。可以直接用trigger()方法来触发blur事件,从而达到提醒的目的。

//提交,最终验证。
 $('#send').click(function(){
		$("form :input.required").trigger('blur');
		var numError = $('form .onError').length;
		if(numError){
			return false;
		} 
		alert("注册成功,密码已发到你的邮箱,请查收.");
 });

为了能否及时提醒,需要给表单绑定keyup事件和focus事件,keyup事件能够在用户每次松开按键时触发,实现实时提醒;focus事件能在元素获得焦点的时候触发,同样可以实时提醒。

//文本框失去焦点后
$('form :input').blur(function(){
	 var $parent = $(this).parent();
	 $parent.find(".formtips").remove();
	 //验证信息...
}).keyup(function(){
   $(this).triggerHandler("blur");
}).focus(function(){
	   $(this).triggerHandler("blur");
});//end blur

trigger("blur")会触发元素绑定的blur事件,也会触发浏览器默认的blur事件;

而triggerHandler("blur")只会触发元素绑定的blur事件,并不会触发浏览器默认的blur事件



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值