jQuery对表单、表格的操作及更多应用(上:表单应用)
内容摘录自锋利的JQuery一书
一、表单应用
1 获取和失去焦点改变样式(P142)
$(function(){
$(":input").focus(function(){ //获取焦点触发事件
$(this).addClass("focus"); //增加样式
}).blur(function(){ //失去焦点触发事件
$(this).removeClass("focus"); //移除样式
});
})
2 多行文本框触发事件改变文本框高度(P144)
$(function(){
var $comment = $("#comment"); //获取文本框
$(".bigger").click(function(){ //点击放大按钮(.bigger)触发事件
if ($comment.height() < 500){ //判断实际高度
$comment.height($comment.height() + 50); //放大高度
}
});
$(".smaller").click(function(){ //点击缩小按钮(.smaller)触发事件
if (!$comment.is(":animated")){ //判断是否处于动画队列中,避免堆积动画队列
if ($comment.height() > 500){ //判断实际高度
$comment.animate({height:"+=50"},400); //以动画方式缩小高度
}
}
});
})
3 文本框滚动条高度变化(P145)
$(function(){
var $comment = $("#comment"); //获取文本框
#(".up").click(function(){ //点击向上滚动按钮(.up)触发事件
if(!$comment.is(":animated")){ //判断是否处于动画队列中,避免堆积动画队列
$comment.animate({scrollTop:"-=50"},400); //以动画方式向上滚动滚动条
}
}); //(向下滚动代码从略)
})
4 复选框全选、全不选、反选等(P146)
$(function(){
$("#checkedAll").click(function(){ //点击触发全选事件
$('[name=items]:checkbox').attr('checked',true);
//使用attr方法更改checked属性(注意属性选择器),反选设置false值即可
});
$("#checkedRev").click(function(){ //点击触发反选事件
$('[name=items]:checkbox').each(function(){ //循环每一个复选框
$(this).attr("checked", !$(this).attr("checked")); //设置反值(jQuery方法)
});
});
});
//如下使用原生JavaScript设置反选更简单
$(function(){
$("checkedRev").click(function(){
$('[name=items]:checkbox').each(function(){ //循环每一个复选框
this.checked = !this.checked; //设置反值(JS原生方法)
});
});
})
5 输出复选框选中的值(P148)
$("#send").click(function(){ //点击触发事件
var str="选中的是:\r\n"; //赋值
$('[name=items]:checkbox:checked').each(function(){ //循环每一个选中的复选框
str += $(this).val() + "\r\n"; //用val()方法获值并循环赋值
});
alert(str); //输出str
})
6 用一个复选框来控制全部复选框的全选和反选(P149)
$("#checkedAll").click(function(){ //触发事件
if(this.checked){
$('[name=items]:checkbox').attr("checked", true); //判断赋值
}else{
$('[name=items]:checkbox').attr("checked",false); //判断赋值
}
});
//因为控制全选的复选框的checked和所有复选框的checked的值是相同的,所以可以省略判断如下
$("#checkedAll").click(function(){
$('[name=items]:checkbox').attr("checked", this.checked);
})
7 全选状态下,任一复选框取消选中,控制全选的复选框则也取消选中;所有复选框同时选中时,控制全选的复选框则也被选中(联动)(P149)
//思路1:
$('[name=items]:checkbox').click(function(){ //点击任一复选框
var flag = true; //定义flag变量,初始值为true
$('[name=items]:checkbox').each(function(){ //循环复选框组
if (!this.checked){
flag = false; //判断当存在一个未选中的复选框时,flag = false
}
});
$('#checkedAll').attr('checked',flag); //将flag变量赋给控制全选的复选框的checked属性
});
//思路2:
$('[name=items]:checkbox').click(function(){ //点击任一复选框
var $tmp = $('[name=items]:checkbox'); //定义临时变量(避免重复使用选择器)
$('#checkedAll').attr('checked', $tmp.length == $tmp.filter(':checked').length);
//使用filter()方法筛选出选中的复选框,和全部复选框的对象比较 length,
//然后将返回的布尔值直接赋给#checkedAll
})
8 下拉框应用,将一个下拉框中已选中的选项(或者全部选项)添加到另一个下拉框中(P150)
$('#add').click(function(){
var $options = $('#select1 option:selected'); //获取选中项
$options.appendTo('#select2'); //追加给另一个下拉框
});
$('#addAll').click(function(){
var $options = $('#select1 option'); //获取全部项
$options.appendTo('#select2'); //追加给另一个下拉框
});
$('#select1').dblclick(function(){ //双击某个选项将其追加给另一个下拉框
var $options = $("option:selected",this); //获取选中项(注意选择器)
$options.appendTo('#select2'); //追加给另一个下拉框
})
9 表单验证,在每一个有requred类的文本框后加入“*”以提示必填项(P153)
$("form :input.required").each(function(){
var $required = $("<strong class='high'> *</strong>"); //创建元素
$(this).parent().append($required); //追加到文档中,注意parent()方法的使用
})
10 验证表单的用户名和邮箱格式是否正确(P154)
$('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="onError formtips">' + errorMsg + '</span>');
//追加错误提示样式
}else{
var okMsg = '输入正确.';
$parent.append('<span class="onSuccess formtips">' + 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="onError formtips">' + errorMsg + '</span>');
//追加错误提示样式
}else{
var okMsg = '输入正确.';
$parent.append('<span class="onSuccess formtips">' + okMsg + '</span>');
//追加正确提示样式
}
}
})
11 验证表单,阻止提交(P155)
$('send').click(function(){
$("form .required:input").trigger('blur'); //模拟触发blur()事件
var numError = $('form .onError').length; //定义numError变量
if (numError){
return false; //判断错误提示个数(长度),如大于0(即存在错误提示)则阻止提交
}
alert("注册成功!");
})
12 实时验证(输入时验证,比blur()验证更及时)(P156)
$('form :input').blur(function(){
//验证代码,见前文
}).keyup(function(){
$(this).triggerHandler("blur"); //每次松开按键时模拟触发blur()事件以实时验证
}).focus(function(){
$(this).triggerHandler("blur"); //每次得到焦点时模拟触发blur()事件以实时验证
jQuery对表单、表格的操作及更多应用(上:表单应用)的更多相关文章
- jQurey对表单表格的操作及更多应用(方法型)
- jQuery(6)——jQuery对表单、表格的操作及更多应用
jQuery对表单.表格的操作及更多应用 [表单应用] 一个表单有表单标签.表单域及表单按钮三个基本部分. 单行文本框应用:获取和失去焦点改变样式. 也可以用CSS中的伪类选择符来实现,但是IE6并不 ...
- jQuery 对表单、表格的操作及更多应用-简略笔记
[jQuery 对表单.表格的操作及更多应用] jquery对表单及表格的操作是实际应用中相当广泛. 对于表单的操作,可以实现 (1)获取和失去焦点改变样式: (2)在多行文本框中可以实现网站评论框的 ...
- 第5章 jQuery对表单、表格的操作及更多应用
本章主要是对前面4章的小结和应用. 一. 表单form应用 表单分为3个组成部分 (1)form标签 表单可包含文本域,复选框,单选按钮等等.表单用于向指定的 URL 传递用户数据. (2)表单域 - ...
- form表单下的button按钮会自动提交表单的问题
form表单下的button按钮会自动提交表单的问题 2017年01月05日 18:02:44 蓝色水 阅读数:18012更多 个人分类: asp.net form表单下的按钮在没有指定type类 ...
- 工作流Activiti框架中表单的使用!详细解析内置表单和外置表单的渲染
Activiti中的表单 Activiti提供了一种方便而且灵活的方式在业务流程中以手工方式添加表单 对表单的支持有2种方式: 通过表单属性对内置表单进行渲染 通过表单属性对外置表单进行渲染 表单属性 ...
- 表单(form)成为 ajax 提交的表单(form)
1.form <form id="ff" method="post"> <div> <label for="name&q ...
- jQuery对表单、表格的操作以及更多应用
表单和表格都是HTML的重要组成部分,分别用于采集.提交用户输入的信息和显示列表数据. 表单应用:一个表单有3个基本组成部分: ①表单标签:包含处理表单数据所用的服务器端程序URL以及数据提交到服务器 ...
- JQuery阻止表单提交的方法总结 - 使用onsubmit()验证表单并阻止非法提交
方法1:<form onsubmit="javascript:confirm()"> 方法内返回false阻止表单提交 示例:代码检测textarea内填写的长度,未填 ...
随机推荐
- pdo调用
php单次调用,例题 <body> <?php //造DSN:驱动名:dbname=数据库名;host=服务器地址 $dsn = "mysql:dbname=mydb;ho ...
- cf.295.B Two Buttons (bfs)
Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- [2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)
昨日(2012.04.09)ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码. ThinkPHP作为国内使用比较广泛的老牌PHP MVC框 ...
- [BZOJ3671][UOJ#6][NOI2014]随机数生成器
[BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...
- Python机器学习库scikit-learn实践
原文:http://blog.csdn.net/zouxy09/article/details/48903179 一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得 ...
- 见招拆招:绕过WAF继续SQL注入常用方法
Web Hacker总是生存在与WAF的不断抗争之中的,厂商不断过滤,Hacker不断绕过.WAF bypass是一个永恒的话题,不少基友也总结了很多奇技怪招.那今天我在这里做个小小的扫盲吧.先来说说 ...
- System.SysUtils.TMarshaller 与 System.TMarshal
转自:http://www.cnblogs.com/del/archive/2013/06/10/3130974.html TMarshaller(结构) 基于 TMarshal(是有一大堆的 cla ...
- Linux MySQL差异备份技巧
MSSQL差异备份使用技巧 15 Apr 2013 所谓的差异备份,就是只备份最近一次备份之后到此次备份之前所增加的那一部分数据.打个比方我第N次备份后数据库存放的内容是ABCD,然后我第N+1次 备 ...
- sharepoint更新多行文本webparth
前台 <script> function Copy() { var value = document.getElementById("<%=BodyBox.ClientID ...
- Greedy:Stripes(POJ 1826)
新生物 题目大意:给你一堆数,两两结合,答案为2*sqrt(x1*x2),问组合成一个数时,最小的量? 超级无敌大水题,排序或者用堆都可以,反正就是优先组合大的,让根号一直把大数开根降低整体的大小 # ...