// javascript 文档 $(function(){ $('textarea, input, select').blur(function() { var e = $(this); if (e.attr("data-validate")) { e.closest('.field').find(".input-help").remove(); var $checkdata = e.attr("data-validate").split(','); var $checkvalue = e.val(); var $checkstate = true; var $checktext = ""; if (e.attr("placeholder") == $checkvalue) { $checkvalue = ""; } if ($checkvalue != "" || e.attr("data-validate").indexof("required") >= 0) { for (var i = 0; i < $checkdata.length; i++) { var $checktype = $checkdata[i].split(':'); if (!$pintuercheck(e, $checktype[0], $checkvalue)) { $checkstate = false; $checktext = $checktext + "
  • " + $checktype[1] + "
  • "; } } }; if ($checkstate) { e.closest('.form-group').removeclass("check-error"); e.parent().find(".input-help").remove(); e.closest('.form-group').addclass("check-success"); } else { e.closest('.form-group').removeclass("check-success"); e.closest('.form-group').addclass("check-error"); e.closest('.field').append('
    '); } } }); $pintuercheck = function(element, type, value) { $pintu = value.replace(/(^\s*)|(\s*$)/g, ""); switch (type) { case "required": return /[^(^\s*)|(\s*$)]/.test($pintu); break; case "chinese": return /^[\u0391-\uffe5]+$/.test($pintu); break; case "number": return /^([+-]?)\d*\.?\d+$/.test($pintu); break; case "integer": return /^-?[1-9]\d*$/.test($pintu); break; case "plusinteger": return /^[0-9]\d*$/.test($pintu); break; case "unplusinteger": return /^-[1-9]\d*$/.test($pintu); break; case "znumber": return /^[1-9]\d*|0$/.test($pintu); break; case "fnumber": return /^-[1-9]\d*|0$/.test($pintu); break; case "double": return /^[-\+]?\d+(\.\d+)?$/.test($pintu); break; case "plusdouble": return /^[+]?\d+(\.\d+)?$/.test($pintu); break; case "unplusdouble": return /^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$/.test($pintu); break; case "english": return /^[a-za-z]+$/.test($pintu); break; case "username": return /^[a-z]\w{3,}$/i.test($pintu); break; case "mobile": return /^\s*(15\d{9}|13\d{9}|14\d{9}|17\d{9}|18\d{9})\s*$/.test($pintu); break; case "phone": return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test($pintu); break; case "tel": return /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/.test($pintu) || /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test($pintu); break; case "email": return /^[^@]+@[^@]+\.[^@]+$/.test($pintu); break; case "url": return /^http:\/\/[a-za-z0-9]+\.[a-za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test($pintu); break; case "ip": return /^[\d\.]{7,15}$/.test($pintu); break; case "qq": return /^[1-9]\d{4,10}$/.test($pintu); break; case "currency": return /^\d+(\.\d+)?$/.test($pintu); break; case "zipcode": return /^[1-9]\d{5}$/.test($pintu); break; case "chinesename": return /^[\u0391-\uffe5]{2,15}$/.test($pintu); break; case "englishname": return /^[a-za-z]{1,161}$/.test($pintu); break; case "age": return /^[1-99]?\d*$/.test($pintu); break; case "date": return /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/.test($pintu); break; case "datetime": return /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/.test($pintu); break; case "idcard": return /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|x)$/.test($pintu); break; case "bigenglish": return /^[a-z]+$/.test($pintu); break; case "smallenglish": return /^[a-z]+$/.test($pintu); break; case "color": return /^#[0-9a-fa-f]{6}$/.test($pintu); break; case "ascii": return /^[\x00-\xff]+$/.test($pintu); break; case "md5": return /^([a-fa-f0-9]{32})$/.test($pintu); break; case "zip": return /(.*)\.(rar|zip|7zip|tgz)$/.test($pintu); break; case "img": return /(.*)\.(jpg|gif|ico|jpeg|png)$/.test($pintu); break; case "doc": return /(.*)\.(doc|xls|docx|xlsx|pdf)$/.test($pintu); break; case "mp3": return /(.*)\.(mp3)$/.test($pintu); break; case "video": return /(.*)\.(rm|rmvb|wmv|avi|mp4|3gp|mkv)$/.test($pintu); break; case "flash": return /(.*)\.(swf|fla|flv)$/.test($pintu); break; case "radio": var radio = element.closest('form').find('input[name="' + element.attr("name") + '"]:checked').length; return eval(radio == 1); break; default: var $test = type.split('#'); if ($test.length > 1) { switch ($test[0]) { case "compare": return eval(number($pintu) + $test[1]); break; case "regexp": return new regexp($test[1], "gi").test($pintu); break; case "length": var $length; if (element.attr("type") == "checkbox") { $length = element.closest('form').find('input[name="' + element.attr("name") + '"]:checked').length; } else { $length = $pintu.replace(/[\u4e00-\u9fa5]/g, "***").length; } return eval($length + $test[1]); break; case "ajax": var $getdata; var $url = $test[1] + $pintu; $.ajaxsetup({ async: false }); $.getjson($url, function(data) { $getdata = data.getdata; }); if ($getdata == "true") { return true; } break; case "repeat": return $pintu == jquery('input[name="' + $test[1] + '"]').eq(0).val(); break; default: return true; break; } break; } else { return true; } } }; $('form').submit(function() { $(this).find('input[data-validate],textarea[data-validate],select[data-validate]').trigger("blur"); var numerror = $(this).find('.check-error').length; if (numerror) { $(this).find('.check-error').first().find('input[data-validate],textarea[data-validate],select[data-validate]').first().focus().select(); return false; } }); $('.form-reset').click(function() { $(this).closest('form').find(".input-help").remove(); $(this).closest('form').find('.form-submit').removeattr('disabled'); $(this).closest('form').find('.form-group').removeclass("check-error"); $(this).closest('form').find('.form-group').removeclass("check-success"); }); });