JS代码
//自定义表单控件验证行为
var checkvalue = function(e){
var el = e.target;
var isvalid = el.checkValidity();
if(isvalid){
el.className= "";
el.parentElement.getElementsByTagName("label")[0].className="";
}else{
el.className= "error";
el.parentElement.getElementsByTagName("label")[0].className="error";
}
e.stopPropagation();
e.preventDefault();
}
//定义表单验证方法
function invalidHandler(evt) {
checkvalue(evt);
}
function loadDemo() {
var myform = document.getElementById("register");
//注册表单的oninvlid事件
myform.addEventListener("invalid", invalidHandler, true);
for(var i=0;i< myform.elements.length-1;i++){
//注册表单元素的onchange事件,优化用户体验
myform.elements[i].addEventListener("change",checkvalue,false);
}
}
//在页面初始化事件(onload)时注册的自定义事件
window.addEventListener("load", loadDemo, false);
最后说下输入两次密码匹配的验证,写的很简单:
New Password:
Confirm Password:
Check Validity
function checkPasswords() {
var pass1 = document.getElementById("password1");
var pass2 = document.getElementById("password2");
if (pass1.value != pass2.value)
pass1.setCustomValidity("两次输入的密码不匹配");
else
pass1.setCustomValidity("");
}