jquery表单验证
为什么要表单验证
常用的表单验证
表单选择器
语法 |
描述 |
示例 |
:input |
匹配所有input、textarea、select和button 元素 |
$("#myform :input")选取表单中所有的input、select和button元素 |
:text |
匹配所有单行文本框 |
$("#myform :text")选取email 和姓名两个input 元素 |
:password |
匹配所有密码框 |
$("#myform :password" )选取所有 <input type="password" />元素 |
:radio |
匹配所有单项按钮 |
$("#myform :radio")选取<input type="radio" />元素 |
:checkbox |
匹配所有复选框 |
$(" #myform :checkbox " )选取 <input type="checkbox " />元素 |
:submit |
匹配所有提交按钮 |
$("#myform :submit " )选取 <input type="submit " />元素 |
语法 |
描述 |
示例 |
:image |
匹配所有图像域 |
$("#myform :image" )选取 <input type=" image" />元素 |
:reset |
匹配所有重置按钮 |
$(" #myform :reset " )选取 <input type=" reset " />元素 |
:button |
匹配所有按钮 |
$("#myform :button" )选取button 元素 |
:file |
匹配所有文件域 |
$(" #myform :file" )选取 <input type=" file " />元素 |
匹配所有不可见元素,或者type 为hidden的元素 |
$("#myform :hidden" )选取<input type="hidden " />、style="display: none"等元素 |
属性过滤选择器
语法 |
描述 |
示例 |
:enabled |
匹配所有可用元素 |
$(" #userform :enabled" )匹配form内部除编号输入框外的所有元素 |
:disabled |
匹配所有不可用元素 |
$(" #userform :disabled" )匹配编号输入框 |
:checked |
匹配所有被选中元素(复选框、单项按钮、select 中的option) |
$(" #userform :checked" )匹配“性别”中的“男”选项和“爱好”中的“编程”选项 |
:selected |
匹配所有选中的option 元素 |
$(" #userform :selected" ) 匹配“家乡”中的“北京”选项 |
验证表单内容:
使用String 对象验证邮箱:不能为空,格式正确。
非空验证:
if (mail == "") { 【检测Email是否为空】
alert("Email不能为空");
return false;
}
字符串查找:indexof():
查找某个指定的字符串值在字符串中首次出现的位置
var str="this is javaScript";
var selectFirst=str.indexOf("Java"); 【返回8】
var selectSecond=str.indexOf("Java",12); 【返回-1】
文本框内容的验证:
密码不能为空,不少于6个字符,姓名不能为空,不能有数字。
长度验证:
if(pwd.length<6){ 【length属性可以获取字符串长度】
alert("密码必须等于或大于6个字符");
return false;
}
判断字符串是否有数字:
使用for循环和substring()方法依次截断单个字符,再判断每个字符是否是数字
for (var i = 0; i < user.length; i++) {
var j = user.substring(i, i + 1); 【截取单个字符】
if (isNaN(j) == false) {
alert("姓名中不能包含数字");
return false;
}
}
表单验证事件和方法
表单验证需要综合运用元素的事件和方法:
类别 |
名称 |
描述 |
事件 |
失去焦点,当光标离开某个文本框时触发 |
|
onfocus |
获得焦点,当光标进入某个文本框时触发 |
|
方法 |
blur() |
从文本域中移开焦点 |
focus() |
在文本域中设置焦点,即获得鼠标光标 |
|
select() |
选取文本域中的内容,突出显示输入区域的内容 |
正则表达式:
为什么需要正则表达式:
- 简洁的代码
- 严谨的验证文本框中的内容
示例:
var reg= /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
if(reg.test(email) ==false){
$email_prompt.html("电子邮件格式不正确,请重新输入");
return false; }
普通方式:
var reg=/表达式/附加参数
var reg=/white/;
var reg=/white/g;
【表达式必须是常量字符串】
【用某些附加参数来代表一些规则:g代表可以进行全局匹配;i代表不区分大小写;m代表可以进行多行匹配】
构造函数:var reg=new RegExp("表达式","附加参数")
var reg=new RegExp("white");
var reg=new RegExp("white","g");
【表达式必须是可以是字符串,也可以是JavaScript当中的常量】
简单模式:
只能表示具体的匹配
var reg=/china/;
var reg=/abc8/;
复合模式:可以使用通配符表达更为抽象的规则模式
var reg=/^\w+$/;
var reg=/^\w+@\w+\.[a-zA-Z]{2,3}(\.[a-zA-Z]{2,3})?$/;
RegExp对象:
RegExp对象的方法:
方法 |
描述 |
exec |
检索字符中是正则表达式的区配,返回找到的值,并确定其位置 |
test |
检索字符串中指定的值,返回true或false |
RegExp对象的属性:
属性 |
描述 |
global |
RegExp对象是否具有标志g |
ignoreCase |
RegExp对象是否具有标志i |
multiline |
RegExp对象是否具有标志m |
String对象:
String对象的方法:
方法 |
描述 |
match |
找到一个或多个正则表达式的匹配 |
search |
检索与正则表达式相匹配的值 |
replace |
替换与正则表达式匹配的字符串 |
split |
把字符串分割为字符串数组 |
Match和search的区别:
search在一个字串对象中查找关键词字串,若匹配则返回关键词在目标字串中第一次出现的位置序列,如果不匹配,就返回-1;search方法只关心有无匹配,找到匹配,就提供返回值,并中断查找。
match是在目标字串对象中寻找与关键词匹配与否的一个方法,它能通过关键词的规则创建实现复杂搜寻功能;不建立规则的前提下,match可当作search来使用,语法也一样,不同的是,若匹配它返回的是关键词自身,若不匹配返回null。
正则表达式符号:
符号 |
描述 |
/…/ |
代表一个模式的开始和结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
\s |
任何空白字符 |
\S |
任何非空白字符 |
\d |
匹配一个数字字符,等价于[0-9] |
\D |
除了数字之外的任何字符,等价于[^0-9] |
\w |
匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_] |
\W |
任何非单字字符,等价于[^a-zA-z0-9_] |
. |
除了换行符之外的任意字符 |
符号 |
描述 |
{n} |
匹配前一项n次 |
{n,} |
匹配前一项n次,或者多次 |
{n,m} |
匹配前一项至少n次,但是不能超过m次 |
* |
匹配前一项0次或多次,等价于{0,} |
+ |
匹配前一项1次或多次,等价于{1,} |
? |
匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1} |
正则示例:
对年龄进行验证,年龄必须在0-120之间
- 0-9这个范围是一位,正则表达式为\d
- 10-99这个范围都是两位数,正则表达式为[1-9]\d
- 100-119这个范围是三位数,正则表达式为1[0-1]\d
- 所有年龄的个位都是0-9,当百位是1,十位是0-1,正则表达式为(1[0-1]|[1-9])?\d
- 年龄120是单独的一种情况,需要单独列出来
验证方法示例:
用.test来检测是否符合设置的正则表达式
$(document).ready(function(){
$("#code").blur(function(){
var code = $(this).val();
var $codeId = $("#pCode");
var regCode = /^\d{6}$/;
if (regCode.test(code) == false) {
$codeId.html("邮政编码不正确,请重新输入");
return false;
}
$codeId.html("");
return true; } );
使用HTML5的方式验证表单:
HTML5新增验证属性:
属性 |
描述 |
提供一种提示(hint),输入域为空时显示,获得焦点输入内容后消失 |
|
规定输入域不能为空 |
|
pattern |
规定验证input域的模式(正则表达式) |
示例:
<input type="text" id="uName" placeholder="英文、数字长度为6-10个字符" required pattern="[a-zA-Z0-9]{6,10}" />
<input type="password" id="pwd" placeholder="长度为6-16个字符" required pattern="[a-zA-Z0-9]{6,16}"/>
validity属性:
为了在使用required、pattern时有更好的提示
属性 |
描述 |
valueMissing |
表单元素设置了required特性,则为必填项。如果必填项的值为空,就无法通过表单验证,valueMissing属性会返回true,否则返回false。 |
typeMismatch |
输入值与type类型不匹配。HTML 5新增的表单类型如email、number、url等,都包含一个原始的类型验证。如果用户输入的内容与表单类型不符合,则typeMismatch属性将返回true,否则返回false。 |
patternMismatch |
输入值与pattern特性的正则表达式不匹配。如果输入的内容不符合pattern验证模式的规则,则patternMismatch属性将返回true,否则返回false。 |
属性 |
描述 |
stepMismatch |
输入的值不符合step特性所推算出的规则。用于填写数值的表单元素可能需要同时设置min、max和step特性,这就限制了输入的值必须是最小值与step特性值的倍数之和。例如范围从0到10,step特性值为2,因为合法值为该范围内的偶数,其他数值均无法通过验证。如果输入值不符合要求,则stepMismatch属性返回true,否则返回false |
customERROR |
使用自定义的验证错误提示信息。使用setCustomValidity( )方法自定义错误提示信息:setCustomValidity(message)会把错误提示信息自定义为message,此时customError属性值为true;setCustomValidity("")会清除自定义的错误信息,此时customError属性值为false。 |
相关阅读
1、使用场景:安全性都一样,都是发送的http协议。安全性与提交文件的业务处理(格式检测,防注入)有关,与提交方式无关。一般登录用表单提
只提交参数到后台,不接收返回值 html代码 <!--第1步:设置 action,method--> <form id="editForm" action="app/edit/destinatio
// 验证姓名function nameValidate(valCon) {var checkResult = true; var valCon1 = $.trim(valCon.val());// 去空 var regu
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Form</title> </head> <body> <p></p> <p></p> <ce
效果如下 完整代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 实例 - 带语境色彩