【HTML5新表单】
1.type:
- email :
验证逻辑不完整,只验证是否包含 @ ;
- search :
- url :
验证逻辑不完整,只判断是否包含 http:// ;
- tel :
电话号码类型:
只能在移动端有效果,会弹出数字键盘;只能输入数字;
pc端,可以输入英文;
- number :
数字类型:3个属性;
min:
max:
step: 默认值1;
- range :
范围类型:
min:
max:
step:
value:当前值;
- color :
颜色类型:取色器;
- date :
日期类型;
- week : 周
- month : 月
2.新表单元素
- datalist元素
定义备选项,与option
与input text搭配使用,input的list属性指向datalist的id;
特点:
数据与结构分离;预定义数据在datalist,结构input;
请选择
北京
南京
天津
- progress元素
进度条;
不同浏览器效果不同;2属性;
- max 没有min属性,最小默认为0;
- value 当前进度值;
functionmychange(){varprogress=document.getElementById("progress");varvalue=progress.value;
value++;
progress.value=value;if(value== 100){
clearTimeout(t);
}
t=setTimeout("mychange()",100);
}
mychange();
- meter元素
刻度;
- min
- max
- value
- low 低预警值
- high 高预警值
- output元素
输出;
for属性
3.表单新属性
- placeholder属性:
类似于value; placeholder="请输入用户名";
默认文本是灰色,并且 文本框获取焦点,输入时,默认文字自动消除;
- multiple属性:
允许文本框中输入多个值,用","隔开;
只定义属性名,没有属性值
- autofocus属性
自动获取焦点
只定义属性名,没有属性值
- form属性
值等于表单元素的id值;
允许表单元素定义在表单之外;
4.表单新验证
1.验证属性
- required :
验证为空;
提交时才提示;
- pattern :
不要斜线;pattern="[a-z]{6,12}"
使用正则表达式验证元素值是否匹配;
验证不了空;
提交时才提示;
- min max
验证当前元素值的最小值和最大值;
适用于type=number类型
提交时才提示;
- minlength maxlength
验证当前元素值的最小长度和最大长度;
提示是英文的;
minlength:提交时才提示;不是H5的新属性;
maxlength:输入时长度就不能大于指定值;
- validity
表单验证在H5中提供一个有效状态;有效状态通过validityState对象获取到,
validityState对象可以通过validity属性得到;
2.验证(有效)状态
validityState对象提供一系列有效状态
***所有验证状态要配合验证属性使用;
- valid
元素所有"验证都通过"就返回true;
Elem.validity.valid;
以下验证返回true,都是验证错误;
- valueMissing
判断当前元素值是否为空。返回true false;
配合required使用;
Elem.validity.valueMissing;
- typeMismatch
判断当前元素是否匹配类型type;返回true false;
配合email,number,url使用;
email.validity.typeMismatch;
- patternMismatch
判断当前元素是否匹配正则表达式;返回true false;
配合pattern使用;
Elem.validity.patternMismatch;
- tooLong
判断当前元素是否匹配长度;返回true false;
配合maxlength;
**使用maxlength属性后,长度不会超出maxlength的值,tooLong很难出现这种情况;****逻辑完整性;
- rangeUnderflow
输入内容值小于min的值时,返回true;
只能匹配min 不能与max比较;
Elem.validity.rangeUnderflow;
- stepMismatch
判断当前元素值是否与step设置相同;
只能匹配step,不和min max比较;
Elem.validity.stepMismatch;
- customError
配合setCustomValidity()方法使用;只要用了此方法,customError就返回true;
setCustomValidity():
作用:设置验证失败后的默认提示信息;
问题:一旦使用该方法修改默认提示信息后,即使输入正确,错误提示信息依旧出现;
解决:当输入正确时,调用该方法将信息设置为空"";
表单验证状态(完整)用户名:
email地址:
密码:
确认密码:
年龄:
成绩:
varuser=document.getElementById("user");
user.οnblur= function(){if(user.validity.valueMissing){
console.log("用户名不能为空.");
}
}varemail=document.getElementById("email");
email.οnblur= function(){if(email.validity.typeMismatch){
console.log("email输入格式错误.");
}
}varpwd=document.getElementById("pwd");
pwd.οnblur= function(){if(pwd.validity.patternMismatch){
console.log("密码输入错误.");
}
}varrepwd=document.getElementById("repwd");
repwd.οnblur= function(){if(repwd.validity.tooLong){
console.log("密码输入过长.");
}
}varage=document.getElementById("age");
age.οnblur= function(){if(age.validity.rangeUnderflow){
console.log("年龄过小,不符合!");
}
}varscore=document.getElementById("score");
score.οnblur= function(){if(score.validity.valid){
console.log("成绩输入正确.");
}else if(score.validity.stepMismatch){
console.log("成绩输入不符.");
}
}