当前位置: 代码迷 >> JavaScript >> js 表单证验
  详细解决方案

js 表单证验

热度:127   发布时间:2012-10-15 09:45:24.0
js 表单验证

/*表单验证

调用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);

  相关解决方案