事件委托
事件代理,又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown......)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。
通过事件源对象e中的目标对象target获取鼠标移入的真正元素
表单验证作用:
减轻服务器的压力
保证输入的数据符合要求
常用的表单验证
验证表单内容
使用String 对象验证密码用户名
不能为空,格式正确
文本框内容的验证
密码不能为空,不少于6个字符,姓名不能为空,不能有数字
使用String 对象验证邮箱
实现思路
使用val( )方法获取文本框的值
使用indexOf( ) 来判断字符串是否包含“@”和“.”
使用方法submit( )提交表单
根据返回值是true还是false来决定是否提交表单
字符串验证
非空验证
检测Email是否为空
if (mail == "") {
alert("Email不能为空");
return false;
}
字符串查找
indexOf():查找某个指定的字符串值在字符串中首次出现的位置
var str="this is js";
var selectFirst=str.indexOf("js"); 返回8
从字符串下标是12 的位置开始寻找字符串,返回的是第一个字母所在的下标
var selectSecond=str.indexOf("js",12); 返回-1
验证登录页面
form.οnsubmit=function(){
var mail=email.value;
if(mail==""){
alert("Email不能为空");
return false;
}
if (mail.indexOf("@") == -1) {
alert("Email格式不正确n必须包含@");
return false;
}
if (mail.indexOf(".") == -1) {
alert("Email格式不正确n必须包含.");
return false;
}
return true;
}
文本框内容的验证
实现思路
使用String对象的length属性验证密码的长度
验证两次输入密码是否一致
使用length属性获取文本长度,然后使用for循环和substring( )方法依次截断单个字符,最后判断每个字符是否是数字
长度验证
length属性可以获取字符串长度
if(pwd.length<6){
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;
}
}
注册页面的验证
form.οnsubmit=function(){
var pwd=getPwd.value;
if (pwd == "") {
alert("密码不能为空");
return false;
}
if (pwd.length < 6) {
alert("密码必须等于或大于6个字符");
return false;
}
var repwd=pwdAgain.value;
if (pwd != repwd) {
alert("两次输入的密码不一致");
return false;
}
var user=userName.value;
if (user == "") {
alert("姓名不能为空");
return false;
}
for (var i = 0; i < user.length; i++) {
var j = user.substring(i, i + 1);
if (isNaN(j) == false) {
alert("姓名中不能包含数字");
return false;
}
}
return true;
}
练习1:
电子邮箱不能为空
电子邮箱中必须包含符号“@”和“.”
当电子邮箱输入框中的内容正确时,页面跳转到注册成功页面(success.html)
校验提示特效
文本输入提示特效
实现思路
把错误信息显示在中,然后使用html()方法,设置和之间的内容
编写脚本验证函数
鼠标失去焦点时(blur事件)调用验证函数
练习2:
名字和姓氏均不能为空,不能有数字
密码不能少于6位,电子邮箱不能为空,格式正确
实现文本框提示特效
正则表达式
为什么需要正则表达式
简洁的代码
严谨的验证文本框中的内容
正则表达式语法
构造函数:var reg=new RegExp(pattern,modifiers);
Pattern 表达式
Modifiers 修饰符
字面量:var reg=/pattern/modifiers;
修饰符
i 执行对大小写不敏感的匹配
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)一般配合字符串match方法使用
常用的表达式:只要有一个满足,均返回true
表达式 描述
[ ]中括号表示其其中任意一个
[a-z] 查找任何从小写 a 到小写 z 的字符
[A-Z] 查找任何从大写 A 到大写 Z 的字符
[0-9] 查找任何从 0 至 9 的数字
[abc] 查找括号内的任意一个字符
[^abc] 查找除了括号内的任意字符,随便一个字母开头都可返回true,即使后面
常用的元字符(特殊字符)
字符 描述
w 匹配数字、大小写字母、下划线
var reg=/w/
W 匹配非数字、大小写字母、下划线,一般用于匹配特殊字符
var reg=/W/
d 匹配数字
var reg=/d/
D 匹配非数字
var reg=/D/
s 匹配空白字符(空格、换行,换行即产生空格)
var reg=/s/
S 匹配非空白字符
var reg=/S/
n 匹配换行符,只匹配n 换行符,空格不匹配
var reg=/n/
注意:这些元字符在使用时需注意区分大小写
正则表达式方法
检测一个字符串是否与正则相匹配
reg.test(string) =》返回值为布尔值 true匹配,false不匹配;返回的是一个数组
reg.exec(string)=》匹配成功返回数组,并确定其位置,否则返回null
var str="efg";
var reg=/[a-z]/; 或者 var reg=/[A-Z]/;
console.log(reg.test(str));
console.log(reg.exec(str));



