day02jQuery表单验证
Posted 云和数据张老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day02jQuery表单验证相关的知识,希望对你有一定的参考价值。
jQuery常用技术
1.元素动态增删方案
2.正则表达式基础
3.表单验证案例
1.jQuery元素动态增删
使用javascript的形式进行元素的增删时,优点是逻辑清晰明了,缺点是比较繁琐
函数 | 描述 |
---|---|
append | 将子元素添加到父元素内的最后 |
remove | 移除元素自身 |
parent | 获取父元素 |
//此处模拟从后台拿到的数据
var jsonArr = [
name:"刘备",age:14,sex:"男",address:"三国",
name:"关羽",age:13,sex:"男",address:"三国",
name:"张飞",age:12,sex:"男",address:"三国"
];
var i = 1;
$('button:eq(0)').click(function()
$.each(jsonArr,function(index,json)
$('table').append("<tr class='add'><td>"+(i++)+"</td><td>"+json.name+"</td><td>"+
json.age+"</td><td>"+json.sex+"</td><td>"+json.address+"</td><td><span class='operation show'>查看</span><span class='operation del'>删除</span></td></tr>")
// $("<tr><td>"+(i++)+"</td><td>"+json.name+"</td><td>"+json.age+"</td><td>"+json.sex+"</td><td>"+json.address+"</td></tr>").appendTo($('table'))
//$('table').prepend("<tr><td>"+(i++)+"</td><td>"+json.name+"</td><td>"+json.age+"</td><td>"+json.sex+"</td><td>"+json.address+"</td></tr>")
)
)
$('button:eq(1)').click(function()
//情况指定元素中的子元素
//$('table').empty()
$('tr').remove('[class="add"]')
)
//给删除标签添加点击事件
$('table').on('click','.del',function()
$(this).parent().parent().remove()
)
2.正则表达式-RegExp
2.1 概述
正则表达式主要是为了去处理(验证)一些比较复杂的数据,例如:手机号运营商区分、身份证号验证等
如果只是简单的验证就不要多此一举再去使用正则表达式,例如:是否为空、是否是11位数字等
要求:只需要各位掌握其基本的使用形式即可,不需要你写复杂的表达式,因为,通常情况下,公司会提供所需要的正则表达式的语句,或者公司没这方面的要求,通常情况下就直接百度一个。
2.2 语法
var patt=new RegExp(pattern,modifiers);
或者更简单的方式:
var patt=/pattern/modifiers;
- pattern(模式) 描述了表达式的模式
- modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项 |
量词(掌握加粗的三个使用方式即可):
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
nX | 匹配包含 X 个 n 的序列的字符串。 |
nX,Y | 匹配包含 X 至 Y 个 n 的序列的字符串。 |
nX, | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
RegExp对象方法:
方法 | 描述 | FF | IE |
---|---|---|---|
compile | 编译正则表达式。 | 1 | 4 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 | 1 | 4 |
test | 检索字符串中指定的值。返回 true 或 false |
2.3 应用
2.3.1 验证11位手机号
let phone = $('input:eq(0)').val();
//定义验证规则
//let phoneVerify = /^1[0-9]10$/;
let phoneVerify = /^11[0-9]10$/;
//进行验证
console.log(phoneVerify.test(phone));
2.3.2 验证邮箱
let email = $('input:eq(0)').val();
let emailVerify = /[0-9A-z]1,@[0-9A-z]2,\\.(cn|com)$/;
console.log(emailVerify.test(email));
2.4 案例-表单验证
用户提交表单时对表单中的数据进行验证,同时,当输入框失去焦点时进行快速验证提示,提供用户体验性
<form action="#">
<input type="text" name="uname" id="uname"><span></span><br>
<input type="text" name="email" id="email"><span></span><br>
<input type="submit" value="check">
</form>
//定义用户名及邮箱的验证规则
let unameVerify = /^[0-9A-z]6,12$/i;
let emailVerify = /[0-9A-z]1,@[0-9A-z]2,\\.(cn|com)$/;
//定义表单提交事件
$('form').submit(function()
//验证表单内容是否完全符合规则
let flag = false;
$('input:not([type="submit"])').each(function()
let content = $(this).val();
//用户名验证
if($(this).attr('name') == "uname")
if(!unameVerify.test(content))
//不符合规则
flag = false;
return;
flag = true;
if($(this).attr('name') == "email")
if(!emailVerify.test(content))
flag = false;
return;
flag = true;
)
return flag;
)
//通过焦点事件对单个输入框进行验证
$('input:not([type="submit"])').on(
focus:function()
if($(this).attr("name") == "uname")
$(this).next().text("数字+字母6~12位");
$(this).next().css("color","#b0b0b0");
if($(this).attr("name") == "email")
$(this).next().text("邮箱格式:xxx@xx.cn/com");
$(this).next().css("color","#b0b0b0");
,
//失去焦点事件
blur:function()
let content = $(this).val()
if($(this).attr("name") == "uname")
if(!unameVerify.test(content))
$(this).next().text("用户名格式不正确");
$(this).next().css("color","red");
if($(this).attr("name") == "email")
if(!emailVerify.test(content))
$(this).next().text("邮箱格式不正确");
$(this).next().css("color","red");
)
本章小结
1.jQuery的动态增删注意拼接形式
2.正则表达式会基础的使用即可,也可单独研究
作业
1、书写拥有三个选择框的穿梭框,使数据允许在三个选择框中移动
以上是关于day02jQuery表单验证的主要内容,如果未能解决你的问题,请参考以下文章
python_way day17 jQuery表单验证,插件,文本框架
使用 Javascript /jQuery 的 Bootstrap 4 表单验证
JavaScript 简单的类似Captcha的验证JavaScript脚本,使用jQuery(表单)验证插件