phpcmx / js_form_check
一个表单验证程序。一个用于表单验证的程序
This package is not auto-updated.
Last update: 2024-09-20 20:21:16 UTC
README
一个用于管理表单验证的js插件
使用方法
首先需要声明对应的formCheck对象
// 这里定义form验证类
var formCheck = new FormCheck({
selector : '#myForm', // form表单的选择器
isAjax : true, // 表单提交方式 如果是true 就要自己组织ajax提交 如果是false 就只是判断能不能提交
action : 'test.php', // 要提交的地址 选填 且仅 isAjax:true 时有效,如果不填写应该从form表单的action属性中获取
// method : 'post', // 要提交的方式 选填 且仅 isAjax:true 时有效,如果不填写应该从form表单的method属性中获取
// 验证前初始化的钩子
startCheck : function(post){
console.log('startCheck', post);
},
// 验证完成的钩子
endCheck : function (res){
console.log('endCheck', res);
}
});
其中FormCheck包含丰富的错误验证规则,可以通过以下方式获取规则列表(实际上有很多,如果还需要更多,可以告诉我)。已经存在的规则
-
require 必须,标记的内容必须填写;
-
noRequire 非必须 如果为空则通过验证,如果不为空则继续验证;
-
compareWith 对比 与某个值进行对比,参数可以是字符串也可以是function回调。在验证密码时可以这样做;
-
lenLimit 限定长度 两个参数 min,max。内容限定在这两个值之间。如果没有传递max,则不验证最大值(最下可以传递0,那和验证不验证有什么区别?);
-
regex 正则验证 传递正则验证规则;
-
post 异步请求验证 这个比较高级,可以使用ajax接口方式验证参数是否正确,很高级哦~需要注意的是,如果你没有设置blur为false,那么在取消焦点和表单提交时都会验证,也就是说会请求两次哦。
// 获取可以验证的方法,里面全是对象实现方式看下 var fVerifyType = formCheck.getVerifyType();
好了,所有的准备工作已经完成,可以对表单进行验证规则设置了。
// 用户名验证
formCheck.addVerify({
id : '用户名', // 用来标记同一个控件,同一个控件添加多个verify事件只会顺序执行,如果出错则不继续执行
selector : '#loginAccount', // 表单的id
blur : true, // 是否在blur取消焦点事件时执行重新验证 默认是true
DAlias : 'loginAccount', // 这个在程序里并没有被使用 这里就是演示如何创建自定义属性,这个能在success和error里调用 ,为了区分我加上了前缀,这是个好习惯
// 验证 是一个验证对象数组,里面的内容有有三种 type success error
verify:[{
/// 添加account的长度验证
type : fVerifyType.lenLimit(6, 16), // 验证类型 between 介于两者之间
// 验证成功 obj 是对象
success : function(d){ // 成功类型返回的是当前配置的对象,比如这个你用 d.id 就能获取 "用户名"
// 因为需要长度验证 并且 正则验证全通过,所以这里不处理,等下个正确再处理。ps:但是这里还是会执行
},
// 验证失败 可以设置统一的error错误处理,这里就可以省略了,也可以写上,做特殊化处理,这样就能覆盖错误提示了
error :function(d, code, msg){
showErrMsg(d.DAlias, msg); // 这里调用的 d.DAlias 自定义属性
}
},{
/// 添加account的正则验证
type : fVerifyType.regex(/^[a-zA-Z0-9_]+$/)
},{
/// post验证账号唯一性
type : fVerifyType.post("test.php?type=/users/verifyAccount", function(){return {account:$("#loginAccount").val()};}),
success : function(d, res){ // 如果请求的是post型,则会有第二个参数,第二个参数是post的返回值
// 判断下是否是json对象
if(typeof res !== 'object'){
res = JSON.parse(res);
}
if(!res){
showErrMsg(d.DAlias, '网络错误');
console.log(res);
return false;
}else if(res.code === 200){
showSuccMsg(d.DAlias);
return true; // 这里返回的 true很重要 标记成功
}else{
showErrMsg(d.DAlias,res.msg);
return false; // 这里返回的false很重要,会影响记录的结果
}
}
}],
// 统一的错误提示代码,为了减少代码量嘛
error : function (d, code, msg){
showErrMsg(d.DAlias, msg);
}
});
好的,按照这个样子把所有的表单元素设置完毕就ok了哦~ 是否很简单?~如果不简单,找我!
附录
简单调用
/// 密码验证
formCheck.addVerify({
id : '密码',
selector : '#loginPsw',
verify : [{
/// 长度验证
type : fVerifyType.lenLimit(6, 16)
},{
/// 密码正则验证
type : fVerifyType.regex(/^[a-zA-Z0-9_!@#$%^&]+$/),
success : function(d){
console.log(d);
}
}],
error : function (d, code, msg){
console.log(d, code, msg);
}
});
所有类别的调用参数:
// 获取可以验证的方法,里面全是对象实现方式看下
var fVerifyType = formCheck.getVerifyType();
// require
fVerifyType.require();
// noRequire
fVerifyType.noRequire();
// compareWith
fVerifyType.compareWith('value');
fVerifyType.compareWith(function(){
$('#selector').val();
});
// lenLimit
fVerifyType.lenLimit(3, 20);
fVerifyType.lenLimit(function(){
return 3;
}, function(){
return 20;
});
// regix
fVerifyType.regix(/^[0-9]$/i);
// post
fVerifyType.post(url, jsonObj);
fVerifyType.post(url, function(){
return jsonObj;
});
哦对了,如果你还想在自己的函数里调用判断,比如在点击发送短信时后调用检查手机号的方法,可以这样做哦 PS:如果你验证方法里有post,验证属于异步验证,获取的结果只能是null,而不是true,false。你可以在验证配置里配置如何处理正确和错误的验证结果
if(formCheck.verify("手机号")){ // 这个 "手机号" 是你在配置的时候的id~
console.log('验证成功');
}else{
console.log('验证失败');
}
特别鸣谢:
语法糖