/**袁嘉伟
* 2014/11/3 15:00
* 校验
*/
$(function(){//easyui的validateBox校验后的tooltip的样式不可调,而且只能逐个验证,所以自己写校验和tooltip
var flag=0;
$('.tip1').each(function(){
$(this).tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写
position: 'right',
deltaX:5,
content: '',
onShow: function(){
$(this).tooltip('tip').css({
color:'#000000',
backgroundColor: '#FFFFCC',
borderColor: '#CC9933'
});
},
onHide:function(){
$(this).css({
backgroundColor:"#FFFFFF"
})
},
showEvent:'',
showDelay:'0',
hideDelay:'10',
hideEvent:'focus'
});
});
$('.tip2').each(function(){
$(this).tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写
position: 'right',
deltaX:5,
content: '',
onShow: function(){
var obj=$(this);
var tip = $(this).tooltip('tip');
$(this).tooltip('tip').css({
color:'#000000',
backgroundColor: '#FFFFCC',
borderColor: '#CC9933'
});
setTimeout(function () {obj.css({backgroundColor:"#FFFFFF"});tip.hide();},2000);//--1秒之后移除提示小框--
},
onHide:function(){
$(this).css({
backgroundColor:"#FFFFFF"
})
},
showEvent:'',
showDelay:'0',
hideDelay:'',
hideEvent:''
});
});
$(".required").each(function(){ //所有必填项后加入*
$(" *").insertAfter(this);
});
$(".requiredChange").each(function(){ //所有必填项后加入*
$(" *").insertAfter(this);
});
$("body").on("change",".requiredChange",function(){
checkRequired($(this));
});
$("body").on("blur",".required",function(){
checkRequired($(this));
});
$("body").on("blur",".password1",function(){
checkPassword($(this));
});
$("body").on("blur",".email",function(){
checkEmail($(this));
});
$("body").on("blur",".zipcode",function(){
checkZipcode($(this));
});
$("body").on("blur",".mobile",function(){
checkMobile($(this));
});
$("body").on("blur",".phone",function(){
checkPhone($(this));
});
$("body").on("blur",".idcard",function(){
checkIdcard($(this));
});
$("body").on("blur",".chs",function(){
checkChs($(this));
});
$("body").on("blur",".notChs",function(){
checkNotChs($(this));
});
$("body").on("blur",".number",function(){
checkNumber($(this));
});
$("body").on("blur",".URL",function(){
checkURL($(this));
});
$("body").on("blur","input[class*='minLength']",function(){
checkMinLength($(this));
});
$("body").on("blur","input[class*='maxLength']",function(){
checkMaxLength($(this));
});
$("body").on("blur",".cnewp",function(){
checkCnewp($(this));
});
$("body").on("blur",".orgCode",function(){
flag= checkOrgCode($(this));
});
if(flag==1){
$("body").on("blur","input[class*='checkUnique']",function(){
// checkUnique($(this));
});
}
});
function addTooltip(obj){ //动态添加的元素要另外用这个来加tooltip
obj.tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写
position: 'right',
deltaX:5,
content: '',
onShow: function(){
$(this).tooltip('tip').css({
color:'#000000',
backgroundColor: '#FFFFCC',
borderColor: '#CC9933'
});
},
onHide:function(){
$(this).css({
backgroundColor:"#FFFFFF"
})
},
showEvent:'',
showDelay:'0',
hideDelay:'10',
hideEvent:'focus'
});
}
function addTooltip2(obj){ //动态添加的元素要另外用这个来加tooltip
obj.tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写
position: 'right',
deltaX:5,
content: '',
onShow: function(){
var obj=$(this);
var tip = $(this).tooltip('tip');
$(this).tooltip('tip').css({
color:'#000000',
backgroundColor: '#FFFFCC',
borderColor: '#CC9933'
});
setTimeout(function () {obj.css({backgroundColor:"#FFFFFF"});tip.hide();},2000);//--1秒之后移除提示小框--
},
onHide:function(){
$(this).css({
backgroundColor:"#FFFFFF"
})
},
showEvent:'',
showDelay:'0',
hideDelay:'',
hideEvent:''
});
}
function hideAllTooltips(){
$("input[class*='tip1']").each(function(){ //最多输入字符
$(this).tooltip('hide');
});
$("select[class*='tip1']").each(function(){ //最多输入字符
$(this).tooltip('hide');
});
}
/*function mySubmit(ff){//后空格是否去掉的问题? //具体怎么提交写到自己页面上
if(checkBeforeSubmit()==1){
$('#'+ff).submit(); //通过才提交,注意页面上的提交按钮type不要用submit,用button
}
};*/
function checkBeforeSubmit(){
var flag=1;
$(".zipcode").each(function(){ //邮编
if(checkZipcode($(this))==false){flag=0;}
//flag=checkZipcode($(this));
});
$(".mobile").each(function(){ //手机13 14 15 18开头,后9位随意
if(checkMobile($(this))==false){flag=0;}
});
$(".phone").each(function(){ //固话
if(checkPhone($(this))==false){flag=0;}
});
$(".idcard").each(function(){ //身份证,用的上个项目的函数做校验
if(checkIdcard($(this))==false){flag=0;}
});
$(".chs").each(function(){ //汉字
if(checkChs($(this))==false){flag=0;}
});
$(".notChs").each(function(){ //非汉字
if(checkNotChs($(this))==false){flag=0;}
});
$(".number").each(function(){ //数字,可有小数点
if(checkNumber($(this))==false){flag=0;}
});
$("input[class*='minLength']").each(function(){ //最少输入字符
if(checkMinLength($(this))==false){flag=0;}
});
$("input[class*='maxLength']").each(function(){ //最多输入字符
if(checkMaxLength($(this))==false){flag=0;}
});
$(".email").each(function(){ //邮箱
if(checkEmail($(this))==false){flag=0;}
});
$(".required").each(function(){ //必填项
if(checkRequired($(this))==false){flag=0;}
});
$(".requiredChange").each(function(){ //必填项
if(checkRequired($(this))==false){flag=0;}
});
$(".password1").each(function(){ //必填项
if(checkPassword($(this))==false){flag=0;}
});
$(".cnewp").each(function(){
if(checkCnewp($(this))==false){flag=0;}
});
$(".URL").each(function(){
if(checkURL($(this))==false){flag=0;}
});
$(".orgCode").each(function(){ //组织机构代码
if(checkOrgCode($(this))==false){flag=0;}
});
if(flag==1)
{
$("input[class*='checkUnique']").each(function(){ //最多输入字符
// if(checkUnique($(this))==false){flag=0;}
});
}
return flag;
}
function checkBeforeSubmitS(divId){ //若提交前只校验某区域下的东西,可用这个函数
var flag=1;
$("#"+divId+" .zipcode").each(function(){ //邮编
if(checkZipcode($(this))==false){flag=0;}
//flag=checkZipcode($(this));
});
$("#"+divId+" .mobile").each(function(){ //手机13 14 15 18开头,后9位随意
if(checkMobile($(this))==false){flag=0;}
});
$("#"+divId+" .phone").each(function(){ //手机13 14 15 18开头,后9位随意
if(checkPhone($(this))==false){flag=0;}
});
$("#"+divId+" .idcard").each(function(){ //身份证,用的上个项目的函数做校验
if(checkIdcard($(this))==false){flag=0;}
});
$("#"+divId+" .chs").each(function(){ //汉字
if(checkChs($(this))==false){flag=0;}
});
$("#"+divId+" .notChs").each(function(){ //非汉字
if(checkNotChs($(this))==false){flag=0;}
});
$("#"+divId+" .number").each(function(){ //数字,可有小数点
if(checkNumber($(this))==false){flag=0;}
});
$("#"+divId+" input[class*='minLength']").each(function(){ //最少输入字符
if(checkMinLength($(this))==false){flag=0;}
});
$("#"+divId+" input[class*='maxLength']").each(function(){ //最多输入字符
if(checkMaxLength($(this))==false){flag=0;}
});
$("#"+divId+" .email").each(function(){ //邮箱
if(checkEmail($(this))==false){flag=0;}
});
$("#"+divId+" .required").each(function(){ //必填项
if(checkRequired($(this))==false){flag=0;}
});
$("#"+divId+" .password1").each(function(){ //必填项
if(checkPassword($(this))==false){flag=0;}
});
$("#"+divId+" .requiredChange").each(function(){ //必填项
if(checkRequired($(this))==false){flag=0;}
});
$("#"+divId+" .cnewp").each(function(){
if(checkCnewp($(this))==false){flag=0;}
});
$("#"+divId+" .URL").each(function(){
if(checkURL($(this))==false){flag=0;}
});
$("#"+divId+" .orgCode").each(function(){ //组织机构代码9 18
if(checkOrgCode($(this))==false){flag=0;}
});
if(flag==1){
$("#"+divId+" input[class*='checkUnique']").each(function(){ //最多输入字符
// if(checkUnique($(this))==false){flag=0;}
});
}
return flag;
}
function checkUnique(obj){ //这个写的不是很好,待优化
var flag=1;
var value=obj.val();
var par=""; //存放checkUnique带的参 如checkUnique:5:userId:ui|ob里的5:txt_userId:txt_userEmailTwo|txt_userEmailTwo
var type=""; //存放checkUnique带的参的第一个 如checkUnique:5:userId:ui|ob里的5 必须配
var code=""; //存放checkUnique带的参的第二个的value 如checkUnique:5:userId:ui|ob里的userId 这个参数用于修改页面的唯一性校验校验到原来自己的时候排除掉,可不配(如checkUnique5::ui|ob)(新增页面等)
var hiddenId="";//存放checkUnique带的参的第三个(hidden input的id) 如checkUnique:5:userId:userAccount里的userAccount这两input的id 因为可能tooltip显示在某正常input框但value来自某隐藏input框
var inputArray="";//存放checkUnique带的参的第四个(都是input的id) 如checkUnique:5:userId:userAccount:ui|ob里的ui ob这两个input的id 用于定自己想在哪个input框显示tooltip
if(trim(value)!=""&&typeof(value)!="undefined"){ //这类验证,全部做成有输入才验证,如果想必填就加上required
var a=obj.attr("class"); //把有该元素的所有class拿下
var b=a.split(" "); //拿回checkUnique这个class
for(x in b){ //拿回checkUnique带的参
if(b[x].indexOf("checkUnique")!="-1"){
par=b[x].substr(12);
}
}
if(trim(par)!=""&&typeof(par)!="undefined"){
var parArray= new Array();
parArray=par.split(":");
if(trim(parArray[0])!=""&&typeof(parArray[0])!="undefined"){ //第一个参应该是type 如checkUnique:5的5 因为是必须配的,所以有才检验
type=parArray[0];
if(trim(parArray[1])!=""&&typeof(parArray[1])!="undefined"){ //拿下第二个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5::ui|ob 或checkUnique:5:txt_userId:ui|ob
code=$("#"+parArray[1]).val();
}else{
code="";
}
if(trim(parArray[2])!=""&&typeof(parArray[2])!="undefined"){//拿下第三个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5:txt_userId:userAccount或checkUnique:5:txt_userId:userAccount:ui|ob ,一般是不用配的,如果这个class放在隐藏input框就要了
hiddenId=parArray[2];
value=$("#"+parArray[2]).val();
}
if(trim(parArray[3])!=""&&typeof(parArray[3])!="undefined"){//拿下第四个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5:txt_userId或checkUnique:5:txt_userId:userAccount:ui|ob ,一般是不用配的,如果这个class放在隐藏input框就要了
inputArray=parArray[3].split("|");
}
$.ajax({
url :projectAllName+"/Admin/Component/checkUnique.action", //后台处理程序
type:"post", //数据发送方式
async:false,
dataType:"json", //接受数据格式
data:{value:value,type:type,code:code}, //这东西自动序列化进url
error: function(){
},
success: function(result){
if(!result.checkResult){
if(typeof(result.info)!="undefined")
{
if(obj.attr("id")=="roleId2"){
obj.tooltip("update",result.info);
obj.tooltip('show');
}else{
obj.tooltip("update",result.info);
obj.tooltip('show');
obj.css("background","#FCEAE8");
for (i=0;i= 224.0.0.0
// excludes network & broacast addresses
// (first & last IP address of each class)
"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" +
"(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" +
"(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" +
"|" +
// host name
"(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)" +
// domain name
"(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" +
// TLD identifier
"(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" +
")" +
// port number
"(?::\\d{2,5})?" +
// resource path
"(?:/\\S*)?" +
"$", "i"
);
if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required
var newVal="";
if(obj.val().indexOf("http://")=="-1"&&obj.val().indexOf("ftp://")=="-1"){
newVal="http://"+obj.val();
}
else{
newVal=obj.val();
}
if(!re_weburl.test(newVal))
{
obj.tooltip("update","URL格式不正确");
obj.tooltip('show');
obj.css("background","#FCEAE8");
return false;
}
}
};
function checkMaxLength(obj){
var length=0;
if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required
var a=obj.attr("class"); //把有maxLength的元素的所有class拿下
var b=a.split(" "); //拿回maxLengthX这个class
for(x in b){ //拿回maxLength带的参
if(b[x].indexOf("maxLength")!="-1"){
length=b[x].substr(9);
}
}
if(obj.val().length>length){
obj.tooltip("update","请最多输入"+length+"个字符");
obj.tooltip('show');
obj.css("background","#FCEAE8");
return false;
}
}
};
function checkCnewp(obj){
if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required
if($('.newp').val()==""){
$('.newp').tooltip("update","请输入新密码");
$('.newp').tooltip('show');
$('.newp').css("background","#FCEAE8");
return false;
}
else if(!(obj.val()==$('.newp').val()))
{
obj.tooltip("update","两次输入不一样");
obj.tooltip('show');
obj.css("background","#FCEAE8");
return false;
}
}
};
function checkPassword(obj){ //这个是要同时有数字和大小写字母组成
if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required
if((!obj.val().match(/([a-z])+/))||(!obj.val().match(/([0-9])+/))||(!obj.val().match(/([A-Z])+/))){
obj.tooltip("update","密码必须同时由大小写字母和数字组成");
obj.tooltip('show');
obj.css("background","#FCEAE8");
return false;
}
}
};
/*
// extend the 'equals' rule
$.extend($.fn.validatebox.defaults.rules, { //可用于重置密码
equals: {
validator: function(value,param){
return value == $(param[0]).val();
},
message: '两次输入不一样'
}
});
$.extend($.fn.validatebox.defaults.rules, { //验证最少输入数,可直接用easyui的length[15,25]去定义最少输入数
minLength: {
validator: function(value, param){
return (value.trim().length >= param[0]);
},
message: '请至少输入 {0} 个字符.' //在页面上validType='minLength[5]'内配置最少输入数
}
});
$.extend($.fn.validatebox.defaults.rules, { //验证数字
number: {
validator: function (value) {
return (/^\d+\.{0,1}\d*$/).test(value);
},
message: '只能输入数字'
}
});
$.extend($.fn.validatebox.defaults.rules, { //验证汉字
CHS: {
validator: function (value) {
return /^[\u0391-\uFFE5]+$/.test(value);
},
message: '只能输入汉字'
}
});
$.extend($.fn.validatebox.defaults.rules, { ////国内邮编验证 只能验证开头不为0的6位数字,如123456等不真实的邮编依然能通过验证
zipcode: {
validator: function (value) {
var reg = /^[1-9]\d{5}$/;
return reg.test(value);
},
message: '邮编必须是非0开始的6位数字.'
}
});
$.extend($.fn.validatebox.defaults.rules, { //手机校验13,14,15,18开头,后9位数字随意
mobile: {
validator: function (value, param) {
return /^1[3|4|5|8]\d{9}$/.test(value);
},
message: '不是正确的11位手机号'
}
});
$.extend($.fn.validatebox.defaults.rules, { //验证身份证号码
idcard: {
validator: function (value, param) {
return validateIdCard(value);
}
}
}); */
///身份证验证函数,不要随意改动
function validateIdCard(obj) {
var aCity = {
11 : "北京", 12 : "天津", 13 : "河北", 14 : "山西", 15 : "内蒙古", 21 : "辽宁", 22 : "吉林", 23 : "黑龙 江", 31 : "上海", 32 : "江苏", 33 : "浙江", 34 : "安徽", 35 : "福建", 36 : "江西", 37 : "山东", 41 : "河南", 42 : "湖 北", 43 : "湖南", 44 : "广东", 45 : "广西", 46 : "海南", 50 : "重庆", 51 : "四川", 52 : "贵州", 53 : "云南", 54 : "西 藏", 61 : "陕西", 62 : "甘肃", 63 : "青海", 64 : "宁夏", 65 : "新疆", 71 : "台湾", 81 : "香港", 82 : "澳门", 91 : "国 外"
};
var iSum = 0;
//var info = "";
var strIDno = obj;
var idCardLength = strIDno.length;
if (!/^\d{17}(\d|x)$/i.test(strIDno) && !/^\d{15}$/i.test(strIDno))
return false;//非法身份证号
if (aCity[parseInt(strIDno.substr(0, 2))] == null)
return false;// 非法地区
// 15位身份证转换为18位
if (idCardLength == 15) {
sBirthday = "19" + strIDno.substr(6, 2) + "-" + Number(strIDno.substr(8, 2)) + "-" + Number(strIDno.substr(10, 2));
var d = new Date(sBirthday.replace(/-/g, "/"))
var dd = d.getFullYear().toString() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
if (sBirthday != dd)
return false;//非法生日
strIDno = strIDno.substring(0, 6) + "19" + strIDno.substring(6, 15);
strIDno = strIDno + GetVerifyBit(strIDno);
}
// 判断是否大于2078年,小于1900年
var year = strIDno.substring(6, 10);
if (year < 1900 || year > 2078)
return false;//非法生日
//18位身份证处理
//在后面的运算中x相当于数字10,所以转换成a
strIDno = strIDno.replace(/x$/i, "a");
sBirthday = strIDno.substr(6, 4) + "-" + Number(strIDno.substr(10, 2)) + "-" + Number(strIDno.substr(12, 2));
var d = new Date(sBirthday.replace(/-/g, "/"))
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate()))
return false;//非法生日
// 身份证编码规范验证
for (var i = 17;i >= 0;i--)
iSum += (Math.pow(2, i) % 11) * parseInt(strIDno.charAt(17 - i), 11);
if (iSum % 11 != 1)
return false;// 非法身份证号
// 判断是否屏蔽身份证
var words = new Array();
words = new Array("11111119111111111", "12121219121212121");
for (var k = 0;k < words.length;k++) {
if (strIDno.indexOf(words[k]) != - 1) {
return false;
}
}
return true;
}
//15位转18位中,计算校验位即最后一位,不要随意改动
function GetVerifyBit(id) {
var result;
var nNum = id.charAt(0) * 7 + id.charAt(1) * 9 + id.charAt(2) * 10 + id.charAt(3) * 5 + id.charAt(4) * 8 + id.charAt(5) * 4 + id.charAt(6) * 2 + id.charAt(7) * 1 + id.charAt(8) * 6 + id.charAt(9) * 3 + id.charAt(10) * 7 + id.charAt(11) * 9 + id.charAt(12) * 10 + id.charAt(13) * 5 + id.charAt(14) * 8 + id.charAt(15) * 4 + id.charAt(16) * 2;
nNum = nNum % 11;
switch (nNum) {
case 0:
result = "1";
break;
case 1:
result = "0";
break;
case 2:
result = "X";
break;
case 3:
result = "9";
break;
case 4:
result = "8";
break;
case 5:
result = "7";
break;
case 6:
result = "6";
break;
case 7:
result = "5";
break;
case 8:
result = "4";
break;
case 9:
result = "3";
break;
case 10:
result = "2";
break;
}
return result;
}
function trim(stringToTrim) {
if(typeof(stringToTrim)=="undefined"||stringToTrim==null){
return;
}
else return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
return stringToTrim.replace(/\s+$/,"");
}
$(document).ready(function(){
$('[type="text"]').focus(function(){
if($(this).val() == ' '){
$(this).val('');
}
})
})