/*表单验证
调用1 validate_form('form'): 调用验证 form为表单form ID
调用2 validate_form('form',1): 调用验证 form为表单form ID 1 表示提交表单
<input type="text" value="" name="name" id="name" mod="ismobile" msg="不正确">
<input type="text" value="" name="name" id="name" mod="isempty|ismobile" msg="不能为空不正确|必须为手机">
<input type="text" value="" name="name" id="name" mod="isnumeral|ismobile" msg="" len="5-12">
*/
;(function($){
var conf = {
"isemail": {
msg: '邮箱地址格式不正确',
reg: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
},
"ismobile": {
msg: '手机号码不正确',
reg: /^1(3\d{1}|5[389])\d{8}$/
},
"isidentity": {
msg: '证件格式不正确',
reg: /^(d){5,18}$/
},
"isempty": {
msg: '该字段不能为空',
reg: /./
},
"isnumeral": {
msg: '必须为数字',
reg: /[\d]+$/
}
};
//计算汉字长度
function str_len(str) {
var charset = document.charset;
var len = 0;
for(var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == "utf-8" ? 3 : 2) : 1;
}
return len;
}
//验证有没有弹出信息 cmsg 配置信息, msg 自定义信息
function validate_msg(cmsg,msg)
{
if(typeof(msg) != 'undefined' && msg!='')
{
return msg;
}else
{
return cmsg;
}
}
//验证是否有isempty 字段,如果没有并且值为空不验证
function validate_mod(mod,v)
{
if(mod.indexOf('isempty')==-1 && v=='')
{
return false;
}else
{
return true;
}
}
//验证长度
function validate_length(len,v)
{
var num = str_len(v);
if(typeof(len) == 'undefined') return true;
var l = parseInt(len.split('-')[0],10);
var r = parseInt(len.split('-')[1],10);
if(num < l || num > r) return false;
return true;
}
//根据不同模式类型做处理 返回验证结果 v 值
function mod_deal(input,mod,msg,v,len)
{
var result = true;
if(!validate_length(len,v))
{
alert(validate_msg('长度应为'+len+'位',msg));
input.focus();
return false;
}
switch(mod)
{
case '':
break;
default:
if(typeof(conf[mod]) != 'undefined')
{
if(!conf[mod].reg.test(v))
{
alert(validate_msg(conf[mod].msg,msg));
input.focus();
result = false;
}
}
}
return result;
}
//处理验证
function validate_start(obj)
{
var mod = obj.attr('mod');
var value = obj.val();
var msg = obj.attr('msg');
var len = obj.attr('len');
if(!validate_mod(mod,value))
{
return false;
}
msg = typeof(msg) != 'undefined'?msg:'';
var mods = mod.split('|');//用竖线分割操作
var msgs = msg.split('|');//有竖线分割信息
for(var i=0;i<mods.length;i++)
{
if(!mod_deal(obj,mods[i],msgs[i],value,len))
{
return false;
}
}
return true;
}
//验证
function validate(objs)
{
var result = true;
objs.each(function(){
result = validate_start($(this));
if(!result)
{
return false;
}
});
return result;
}
//验证 input
function validate_input(id)
{
var objs = $("#"+id+" input[mod]");
return validate(objs);
}
//验证select
function validate_select(id)
{
var objs = $("#"+id+" select[mod]");
return validate(objs);
}
window['validate_form'] = function(id , type)
{
var submit = validate_input(id);
if(submit){submit = validate_select(id);}
if(type==1 && submit)
{
$('#'+id).submit();
}
return submit;
}
})(jQuery);