原生JS的表单验证
今天完成了一个表单验证的功能,原生JS写的。同样挂在朋友的空间里。地址:http://www.webzhishi.com/javascript-form/
说明一下:
三个接口
1)添加验证项
var a = validator({
"form": "validator-form",
ajaxSubmit:true,
beforSubmit:function(){
//alert("表单提交前执行的函数");
},
afterSubmit:function(){
alert("ajax提交后返回的数据是:"+this.responseText);
}
}).add({
"target": "username",
"rule_type": "username",
'action':'2.php',
'tips':'说点什么好呢'
})
可以链写,也可以单独写
a.add({
"target": "password",
"rule_type": "password"
})
2)删除验证项 username是表单元素的ID
a.remove('username');
3)重置整个表单
a.reset();
如果一个页面有多个表单,只需要用不同的变量引用即可
var a = validator({
"form": "validator-form",
ajaxSubmit:true,
beforSubmit:function(){
//alert("表单提交前执行的函数");
},
afterSubmit:function(){
alert("ajax提交后返回的数据是:"+this.responseText);
}
});
var b = validator({
"form": "validator-form2",
ajaxSubmit:true,
beforSubmit:function(){
//alert("表单提交前执行的函数");
},
afterSubmit:function(){
alert("ajax提交后返回的数据是:"+this.responseText);
}
})
a.支持自定义提示信息
.add({
"target": "username",
"rule_type": "username",
'tips':'说点什么好呢',
'error':'哎哟,你咋就填错了呢,亲,您的智商是0么?'
})
b.支持自定义规则,设置其rule即可,但这个时候就不要用rule_type了
.add({
"target": "password",
"rule": /^\d{6,11}$/
})
c.支持多重验证规则,设置rule_type,和JS里的条件判断一样
.add({
"target": "age",
"rule_type": "(number&&range)||empty",
"error":'虽然这玩意儿不是必填项,但既然你填了,就把它填对吧。'
})
d.支持ajax验证,设置action(提交地址)即可
add({
"target": "username",
"rule_type": "username",
'action':'2.php',
'tips':'说点什么好呢'
})
e.支持ajax表单提交,只需设置ajaxSubmit为true即可,提交方式是form的methoed属性,提交地址是form的action属性值,表单提前交可执行beforSubmit,ajax提交完成后执行afterSubmit回调
validator({
"form": "validator-form",
ajaxSubmit:true,
beforSubmit:function(){
//alert("表单提交前执行的函数");
},
afterSubmit:function(){
alert("ajax提交后返回的数据是:"+this.responseText);
}
})
f.支持验证两个表单元素的值是否相同,一般用在重复密码上
.add({
"target": "confirm-password",
"rule_type": "password",
"sameTo": "password", //验证两个表单元素的值是否相同,一般用在重复密码上
'error':'你填写的密码不正确或者和原密码不同'
})
g.如果不需要提示,加个no_Tip就可以了
.add({
"target": "confirm-password",
"rule_type": "password",
"no_tip":true
})
下面举个完整的例 子:
/**
* @author Administrator
*/
var a = validator({
"form": "validator-form", //表单ID
ajaxSubmit:true, //以ajax的形式提交
beforSubmit:function(){ //提交前执行
//alert("表单提交前执行的函数");
},
afterSubmit:function(){ //提交后执行,this指向的是ajax实例
alert("ajax提交后返回的数据是:"+this.responseText);
}
}).add({
"target": "username", //需要验证的表单元素的ID
"rule_type": "(username&&nameLen)||empty", //验证规则,可组合任意个规则,和原生JS的一样
'action':'2.php', //ajax验证,一般用在判断用户名的唯一性,后台需返回一个对象{isPass:true||false};
'tips':'说点什么好呢' //自定义提示信息
'error':'哎哟,你咋就填错了呢,亲,您的智商是0么?' //自定义错误提示信息
}).add({
"target": "password",
"rule": /^\d{6,11}$/ //自定义验证规则
}).add({
"target": "confirm-password",
"rule_type": "password",
"sameTo": "password", //验证两个表单元素的值是否相同,一般用在重复密码上
'error':'你填写的密码不正确或者和原密码不同'
});
//添加一个验证项
a.add({
"target": "age",
"rule_type": "number||empty",
"error":'虽然这玩意儿不是必填项,但既然你填了,就把它填对吧。',
beforeFocus:function(){},//验证元素获得焦点时执行,
beforeBlur:function(){},//验证元素失去焦点时执行,
onkeypress:function(){},//验证元素正在输入的时候执行,
afterChange:function(){}//select元素的值改变时执行,注意,此函数仅限select
});
//删除一个验证项
a.remove('username');
//重置表单
a.reset();
浙公网安备 33010602011771号