if(!I18n) { var I18n = { trans: function(s) { return s; } }; } String.formatWithParams = function(source, params){ if (arguments.length == 1) return function(param){ return String.formatWithParams(source, param); }; if (arguments.length > 2) params = jQuery.makeArray(arguments).slice(1); if (params.constructor != Array) params = [params]; jQuery.each(params, function(i, n){ source = source.replace(new RegExp("\\{" + i + "\\}"), n); }); return source; }; //鍘熷厛閿欒淇℃伅鏄揣璺熺潃element鐨勫悗闈紝鏈夋椂鍊檈lement濡傛灉鍚庨潰鏈変笅鎷夋寜閽殑璇濆鑷翠袱涓儴鍒嗗氨鍒嗙浜嗭紝杩欐牱鏄剧殑寰堜笐锛 //瑙e喅鍔炴硶鏄細鎶婇敊璇俊鎭斁鍦╡lement鐨勭埗瀹瑰櫒鐨勬渶鍚庨潰 //淇敼label.insertAfter(element)->label.appendTo(jQuery(element).parent()) jQuery.validator.prototype.showLabel=function(element, message) { var label = this.errorsFor( element ); if ( label.length ) { // refresh error/success class label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); // check if we have a generated label, replace the message then label.attr("generated") && label.html(message); } else { // create label label = jQuery("<" + this.settings.errorElement + "/>") .attr({"for": this.idOrName(element), generated: true}) .addClass(this.settings.errorClass) .html(message || ""); if ( this.settings.wrapper ) { // make sure the element is visible, even in IE // actually showing the wrapped element is handled elsewhere label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); } if ( !this.labelContainer.append(label).length ) this.settings.errorPlacement ? this.settings.errorPlacement(label, jQuery(element) ) : label.appendTo(jQuery(element).parent());//: label.insertAfter(element); } if ( !message && this.settings.success ) { label.text(""); typeof this.settings.success == "string" ? label.addClass( this.settings.success ) : this.settings.success( label ); } this.toShow = this.toShow.add(label); }; jQuery.extend(jQuery.validator.messages, { required: I18n.trans("蹇呭~"), email: I18n.trans("璇疯緭鍏ュ悎娉曠殑Email鍦板潃"), ip: I18n.trans("璇疯緭鍏ュ悎娉曠殑Ip鍦板潃"), url: I18n.trans("璇疯緭鍏ュ悎娉曠殑缃戝潃"), date: I18n.trans("璇疯緭鍏ュ悎娉曠殑鏃ユ湡"), dateISO: I18n.trans("璇疯緭鍏ュ悎娉曠殑鏃ユ湡"), number: I18n.trans("璇疯緭鍏ユ湁鏁堢殑鏁板瓧"), digits: I18n.trans("鍙兘杈撳叆鑷劧鏁?), creditcard: I18n.trans("璇疯緭鍏ュ悎娉曠殑淇$敤鍗″彿"), equalTo: I18n.trans("璇峰啀娆¤緭鍏ョ浉鍚岀殑鍊?), accept: I18n.trans("璇疯緭鍏ユ嫢鏈夊悎娉曞悗缂€鍚嶇殑瀛楃涓?), maxlength: String.formatWithParams(I18n.trans("杈撳叆涓嶈兘瓒呰繃 {0} 涓瓧")), minlength: String.formatWithParams(I18n.trans("杈撳叆涓嶈兘灏戜簬 {0} 涓瓧")), rangeLength: String.formatWithParams(I18n.trans("杈撳叆鍊肩殑闀垮害搴斿湪{0}鍜寋1}涔嬮棿")), rangeValue: String.formatWithParams(I18n.trans("杈撳叆鐨勫€煎簲鍦▄0}鍜寋1}涔嬮棿")), maxValue: String.formatWithParams(I18n.trans("杈撳叆鐨勫€煎簲璇ュ皬浜庢垨绛変簬 {0}")), minValue: String.formatWithParams(I18n.trans("杈撳叆鐨勫€煎簲璇ュぇ浜庢垨绛変簬 {0}")), max: jQuery.format(I18n.trans("璇疯緭鍏ヤ竴涓€煎皬浜庢垨绛変簬 {0}")), min: jQuery.format(I18n.trans("璇疯緭鍏ヤ竴涓€煎ぇ浜庢垨绛変簬 {0}")) }); jQuery.validator.addMethod('notCN', function(value, element){ // return this.optional(element) || /^[a-zA-Z][\.a-zA-Z\s0-9]*?[a-zA-Z]+$/i.test(value); // 鍒ゆ柇涓嬫眽瀛楋紝涓婇潰鐨勬鍒欏湪 鍗曞瓧姣嶆椂鍒ゆ柇閿欒銆 return this.optional(element) || !(/[\u4e00-\u9fa5]/g.test(value)); }, I18n.trans("涓嶈兘杈撳叆姹夊瓧")); jQuery.validator.addMethod('notSpecial', function(value, element){ return this.optional(element) || /^([0-9a-zA-Z\u4e00-\u9fa5]+)$/i.test(value); }, I18n.trans("涓嶈兘杈撳叆鐗规畩瀛楃")); jQuery.validator.addMethod('ip', function(value, element){ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/ip_address_validation/ return this.optional(element) || /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(value); }, I18n.trans("璇疯緭鍏ュ悎娉曠殑Ip鍦板潃")); jQuery.validator.addMethod('telephoneCN', function(value, element, param){ return this.optional(element) || /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^[0-9]{16}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0[0-9]{10,11}$)|(^[0-9]{11}$)/.test(value); }, I18n.trans("涓嶇鍚堢數璇濆彿鐮佺殑鏍煎紡瑕佹眰")); jQuery.validator.addMethod('CN', function(value, element, param){ return this.optional(element) || /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0]){0,}$/gi.test(value); }, I18n.trans("璇疯緭鍏ヤ腑鏂?)); jQuery.validator.addMethod('identitycard', function(value, element, param){ return this.optional(element) || /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/.test(value) || /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|(x)|(X)){1}$/.test(value); }, I18n.trans("涓嶆槸鏈夋晥鐨勮韩浠借瘉鍙?)); jQuery.validator.addMethod('creditcardCN', function(value, element, param){ //return (value.length > 14 && value.length < 21); return this.optional(element) || /^\d{15}(\d{2}[A-Za-z0-9])?$/.test(value) || /^[A-Za-z]\d{6}[A-Za-z0-9]$/.test(value); }, I18n.trans("涓嶆槸鏈夋晥鐨勪俊鐢ㄥ崱鍙?)); jQuery.validator.addMethod('zipCode', function(value, element, param){ return this.optional(element) || (value.length = 6 && /^\d+$/.test(value)); }, I18n.trans("涓嶆槸鍚堟硶鐨勯偖鏀跨紪鐮?)); jQuery.validator.addMethod('dateISOWithoutDD', function(value, element, param){ return this.optional(element) || /^\d{4}[\/-]\d{2}$/.test(value); }, I18n.trans("涓嶆槸鍚堟硶鐨勫勾鏈?)); jQuery.validator.prototype.idOrName = function(element) { if (element.id) { return element.id; } var id = this.checkable(element) ? element.name: element.id || element.name; return id; }; //鍔犲叆涓枃闀垮害闄愬埗 /* 鐢ㄤ笉鍒帮紝mysql涓嬩腑鏂囧瓧绗﹀拰鑻辨枃瀛楃閮芥槸鍗犱竴涓瓧绗﹀瓨鍌ㄧ殑锛屼腑鑻辨枃鏄粺涓€澶勭悊鐨勶紝鎵€浠ヨ繖閲屽氨涓嶉渶瑕佸垽鏂腑鏂囧崰涓や釜瀛楃浜 jQuery.validator.prototype.getLength = function(value, element){ switch( element.nodeName.toLowerCase() ) { case 'select': return jQuery("option:selected", element).length; case 'input': if( this.checkable( element) ) return this.findByName(element.name).filter(':checked').length; } return value.replace(/[^\x00-\xff]/g,"**").length; };*/ /** * Return true, if the value is a valid date, also making this formal check yyyy-mm-dd. * * @example jQuery.validator.methods.date("1900-01-10") * @result true * * @example * @desc Declares an optional input element whose value must be a valid date. * * @name jQuery.validator.methods.date10 * @type Boolean * @cat Plugins/Validate/Methods */ jQuery.validator.addMethod( "date10", function(value, element) { var check = false; var re = /^\d{4}-\d{2}-\d{2}$/ if( re.test(value)){ var adata = value.split('-'); var aaaa = parseInt(adata[0],10); var mm = parseInt(adata[1],10); var gg = parseInt(adata[2],10); var xdata = new Date(aaaa,mm-1,gg); if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) ) check = true; else check = false; } else check = false; return this.optional(element) || check; }, I18n.trans("璇疯緭鍏ユ纭牸寮忕殑鏃ユ湡(yyyy-mm-dd锛屼緥濡傦細1990-01-10)") ); jQuery.validator.addMethod("time", function(value, element) { return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){0,2}$/.test(value); }, I18n.trans("璇疯緭鍏ユ湁鏁堢殑鏃堕棿(00:00 鑷 23:59)")); /** 澶氶€夋鏈€澶氬彧鑳介€夋嫨鐨勬暟鐩 */ jQuery.validator.addMethod('maxSelected', function(value, element, param){ return this.optional(element) || this.getLength(jQuery.trim(value), element) <= param; }, String.formatWithParams(I18n.trans("鏈€澶氬彧鑳介€夋嫨 {0} 涓€夐」"))); jQuery.validator.addMethod('minSelected', function(value, element, param){ return this.optional(element) || this.getLength(jQuery.trim(value), element) >= param; }, String.formatWithParams(I18n.trans("鏈€灏戣閫夋嫨 {0} 涓€夐」"))); /** 楠岃瘉鏃堕棿鏍煎紡: yyyy-mm-dd hh:mm:ss */ jQuery.validator.addMethod('timestamp', function(value, element) { var re = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, check = false; if(re.test(value)) { var split = value.split(/[^\d]+/), year = parseInt(split[0], 10), month = parseInt(split[1], 10), day = parseInt(split[2], 10), hour = parseInt(split[3], 10), minute = parseInt(split[4], 10), second = parseInt(split[5], 10); if(hour >= 24 || minute >= 60 || second >= 60) { check = false; }else{ var xdata = new Date(year, month-1, day); if(( xdata.getFullYear() == year ) && ( xdata.getMonth () == month - 1 ) && ( xdata.getDate() == day )) { check = true; } } }else{ check = false; } return this.optional(element) || check; }, I18n.trans("璇疯緭鍏ユ纭牸寮忕殑鏃堕棿(yyyy-mm-dd hh:mm:ss锛屼緥濡傦細2012-08-01 12:20:10)")); jQuery.validator.addMethod('gt', function(value, element, param){ return this.optional(element) || value > param; }, I18n.trans("璇疯緭鍏ヤ竴涓€煎ぇ浜 {0}"));