| Current Path : /home/zqegovsj/www/us3web.haibo.com.cn/biguo/image/js/ |
| Current File : /home/zqegovsj/www/us3web.haibo.com.cn/biguo/image/js/formValidator.js |
var jQuery_formValidator_initConfig;
(function($){
$.formValidator = {
sustainType: function(id, setting){
var elem = $("#" + id).get(0);
var srcTag = elem.tagName;
var stype = elem.type;
switch (setting.validateType) {
case "InitValidator":
return true;
case "InputValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA" ||
srcTag == "SELECT") {
return true;
}
else {
return false;
}
case "CompareValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA") {
if (stype == "checkbox" || stype == "radio") {
return false;
}
else {
return true;
}
}
return false;
case "AjaxValidator":
if (stype == "text" || stype == "textarea" ||
stype == "file" ||
stype == "select-one" ||
stype == "password") {
return true;
}
else {
return false;
}
case "RegexValidator":
if (srcTag == "INPUT" || srcTag == "TEXTAREA") {
if (stype == "checkbox" || stype == "radio") {
return false;
}
else {
return true;
}
}
return false;
case "FunctionValidator":
return true;
}
},
initConfig: function(controlOptions){
var settings = {
debug: false,
validatorGroup: "1",
alertMessage: false,
validObjectIds: "",
onSuccess: function(){
return true;
},
onError: function(){
},
submitOnce: false
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
if (document.getElementById('b11')) {
$.formValidator.fileCheck();
}
if (jQuery_formValidator_initConfig == null) {
jQuery_formValidator_initConfig = new Array();
}
jQuery_formValidator_initConfig.push(settings);
},
fileCheck: function(){
$("input[type=file]").change(function(){
if ($(this).siblings('.wrong').size() > 0) {
var wrmsg = $(this).siblings('.wrong').text();
$.formValidator.removeTip(wrmsg)
$(this).siblings('.wrong').remove();
}
})
},
removeTip: function(wrmsg){
$('#b11 ul').each(function(){
if ($.trim($(this).text()) == $.trim(wrmsg)) {
$(this).remove();
}
});
if ($('#b11 ul').size() == 0) {
$('#b11').remove();
}
},
appendValid: function(id, setting){
if (!$.formValidator.sustainType(id, setting))
return -1;
var srcjo = $("#" + id).get(0);
if (setting.validateType == "InitValidator" || !srcjo.settings ||
srcjo.settings == undefined) {
srcjo.settings = new Array();
}
var len = srcjo.settings.push(setting);
srcjo.settings[len - 1].index = len - 1;
return len - 1;
},
getInitConfig: function(validatorGroup){
if (jQuery_formValidator_initConfig != null) {
for (i = 0; i < jQuery_formValidator_initConfig.length; i++) {
if (validatorGroup == jQuery_formValidator_initConfig[i].validatorGroup) {
return jQuery_formValidator_initConfig[i];
}
}
}
return null;
},
triggerValidate: function(returnObj){
switch (returnObj.setting.validateType) {
case "InputValidator":
$.formValidator.InputValid(returnObj);
break;
case "CompareValidator":
$.formValidator.CompareValid(returnObj);
break;
case "AjaxValidator":
$.formValidator.AjaxValid(returnObj);
break;
case "RegexValidator":
$.formValidator.RegexValid(returnObj);
break;
case "FunctionValidator":
$.formValidator.FunctionValid(returnObj);
break;
}
},
SetTipState: function(tipid, showclass, showmsg){
var show = (showclass == "onSuccess") ||
($("#" + tipid).attr("class") != "onError") ||
(showclass == "onError");
if (show) {
var tip = $("#" + tipid);
if (showmsg == null || showmsg == "") {
tip.fadeOut(1000);
}
else {
tip.fadeIn(1000);
tip.removeClass();
tip.addClass(showclass);
tip.html(showmsg);
}
}
},
SetFailState: function(tipid, showmsg){
var tip = $("#" + tipid);
tip.removeClass();
tip.addClass("onError");
tip.html(showmsg);
},
ShowMessage: function(returnObj){
var id = returnObj.id;
var isValid = returnObj.isValid;
var setting = returnObj.setting;
var showmsg = "";
var showclass = "";
var settings = $("#" + id).get(0).settings;
var intiConfig = $.formValidator.getInitConfig(settings[0].validatorGroup);
if (!isValid) {
if (setting.validateType == "AjaxValidator") {
if (setting.lastValid == "") {
showclass = "onLoad";
showmsg = setting.onwait;
}
else {
showclass = "onError";
showmsg = setting.onerror;
}
}
else {
showmsg = (returnObj.errormsg == "" ? setting.onerror : returnObj.errormsg);
showclass = "onError";
}
if (intiConfig.alertMessage) {
var elem = $("#" + id).get(0);
if (elem.validoldvalue != $(elem).val()) {
alert(showmsg);
}
}
else {
$.formValidator.SetTipState(settings[0].tipid, showclass, showmsg);
}
}
else {
if (!intiConfig.alertMessage) {
var showmsg = "";
if ($.formValidator.IsEmpty(id)) {
showmsg = setting.onempty;
}
else {
showmsg = setting.oncorrect;
}
$.formValidator.SetTipState(setting.tipid, "onSuccess", showmsg);
}
}
},
GetLength: function(id){
var srcjo = $("#" + id);
sType = srcjo.get(0).type;
var len = 0;
switch (sType) {
case "text":
case "hidden":
case "password":
case "textarea":
case "file":
var val = srcjo.val();
for (var i = 0; i < val.length; i++) {
if (val.charCodeAt(i) >= 0x4e00 &&
val.charCodeAt(i) <= 0x9fa5) {
len += 2;
}
else {
len++;
}
}
break;
case "checkbox":
case "radio":
len = $("input[type='" + sType + "'][name='" +
srcjo.attr("name") +
"']:checked").length;
break;
case "select-one":
len = srcjo.get(0).options ? srcjo.get(0).options.selectedIndex : -1;
break;
case "select-multiple":
len = $("select[name='" + srcjo.get(0).name +
"'] option:selected").length;
break;
}
return len;
},
IsEmpty: function(id){
if ($("#" + id).get(0).settings[0].empty &&
$.formValidator.GetLength(id) == 0) {
return true;
}
else {
return false;
}
},
IsOneValid: function(id){
return $.formValidator.OneIsValid(id, 1).isValid;
},
OneIsValid: function(id, index){
var returnObj = new Object();
returnObj.id = id;
returnObj.ajax = -1;
returnObj.errormsg = "";
var elem = $("#" + id).get(0);
var settings = elem.settings;
var settingslen = settings.length;
if (settingslen == 1) {
settings[0].bind = false;
}
if (!settings[0].bind) {
return null;
}
for (var i = 0; i < settingslen; i++) {
if (i == 0) {
if ($.formValidator.IsEmpty(id)) {
returnObj.isValid = true;
returnObj.setting = settings[0];
break;
}
continue;
}
returnObj.setting = settings[i];
if (settings[i].validateType != "AjaxValidator") {
$.formValidator.triggerValidate(returnObj);
}
else {
returnObj.ajax = i;
}
if (!settings[i].isValid) {
returnObj.isValid = false;
returnObj.setting = settings[i];
break;
}
else {
returnObj.isValid = true;
returnObj.setting = settings[0];
if (settings[i].validateType == "AjaxValidator")
break;
}
}
return returnObj;
},
RetSetTipState: function(validatorGroup){
var initConfig = $.formValidator.getInitConfig(validatorGroup);
var jqObjs = $(initConfig.validObjectIds);
jqObjs.each(function(){
var setting0 = this.settings[0];
$.formValidator.SetTipState(setting0.tipid, "onShow", setting0.onshow);
});
},
ReplacePuncFromCnToEn: function(){
$("input[type=text]").each(function(){
var str = this.value;
this.value = replaceCn(str);
});
},
PageIsValid: function(validatorGroup){
$(":text,#o11").each(function(){
var str = this.value;
this.value = replaceCn(str);
});
if (validatorGroup == null || validatorGroup == undefined)
validatorGroup = "1";
var isValid = true;
var thefirstid = "", thefirsterrmsg;
var returnObj, setting;
var error_tip = "^";
var initConfig = $.formValidator.getInitConfig(validatorGroup);
var jqObjs = $(initConfig.validObjectIds);
jqObjs.each(function(i, elem){
if (elem.settings[0].bind) {
returnObj = $.formValidator.OneIsValid(elem.id, 1);
if (returnObj) {
var tipid = elem.settings[0].tipid;
if (!returnObj.isValid) {
isValid = false;
if (thefirstid == "") {
thefirstid = returnObj.id;
thefirsterrmsg = (returnObj.errormsg == "" ? returnObj.setting.onerror : returnObj.errormsg)
}
}
if (!initConfig.alertMessage) {
if (error_tip.indexOf("^" + tipid + "^") == -1) {
error_tip = error_tip + tipid + "^";
if (!returnObj.isValid) {
error_tip = error_tip + tipid + "^";
}
if (elem.id == 'userEmail' &&
(typeof errStr != 'undefined') &&
errStr.length > 0) {
returnObj.setting.onerror = errStr;
}
$.formValidator.ShowMessage(returnObj);
}
}
}
}
});
if (isValid) {
if (document.getElementById('s15'))
document.getElementById('s15').disabled = 'disabled';
isValid = initConfig.onSuccess();
if (initConfig.submitOnce) {
if (document.getElementById('s15'))
document.getElementById('s15').disabled = 'disabled';
}
}
else {
var obj = $("#" + thefirstid).get(0);
initConfig.onError(thefirsterrmsg, obj);
if (thefirstid != "") {
window.scrollTo(0, $("#" + thefirstid).offset().top - 100);
$("#" + thefirstid).focus();
}
}
return !initConfig.debug && isValid;
},
AjaxValid: function(returnObj){
var id = returnObj.id;
var srcjo = $("#" + id);
var setting = srcjo.get(0).settings[returnObj.ajax];
var ls_url = setting.url;
if (srcjo.size() == 0 && srcjo.get(0).settings[0].empty) {
returnObj.setting = $("#" + id).get(0).settings[0];
returnObj.isValid = true;
$.formValidator.ShowMessage(returnObj);
setting.isValid = true;
return;
}
if (setting.addidvalue) {
if (id === 'o11') {
var sid = $("#" + id).attr('name');
var parm = "clientid=" + sid + "&" + sid + "=" +
encodeURIComponent(srcjo.val());
}
else {
var parm = "clientid=" + id + "&" + id + "=" +
encodeURIComponent(srcjo.val());
}
ls_url = ls_url +
((ls_url).indexOf("?") > 0 ? ("&" + parm) : ("?" + parm));
}
$.ajax({
mode: "abort",
type: setting.type,
url: ls_url,
cache: setting.cache,
data: setting.data,
async: setting.async,
dataType: setting.datatype,
success: function(data){
setting0 = srcjo.get(0).settings[0];
var result = setting.success(data);
if (result == true) {
$.formValidator.SetTipState(setting0.tipid, "onSuccess", setting0.oncorrect);
setting.isValid = true;
}
else {
if (typeof result == 'string') {
$.formValidator.SetTipState(setting0.tipid, "onError", result);
}
else {
$.formValidator.SetTipState(setting0.tipid, "onError", setting.onerror);
}
setting.isValid = false;
}
},
complete: function(){
if (setting.buttons && setting.buttons.length > 0)
setting.buttons.attr({
"disabled": false
});
setting.complete;
},
beforeSend: function(xhr){
if (setting.buttons && setting.buttons.length > 0)
setting.buttons.attr({
"disabled": true
});
var isvalid = setting.beforesend(xhr);
if (isvalid)
setting.isValid = false;
setting.lastValid = "-1";
return isvalid;
},
error: function(){
setting0 = srcjo.get(0).settings[0];
$.formValidator.SetTipState(setting0.tipid, "onError", setting.onerror);
setting.isValid = false;
setting.error();
},
processData: setting.processdata
});
},
RegexValid: function(returnObj){
var id = returnObj.id;
var str = document.getElementById(id).value;
if (($("#" + id).attr('type').toLowerCase()) != 'file') {
document.getElementById(id).value = replaceCn(str);
}
var setting = returnObj.setting;
var srcTag = $("#" + id).get(0).tagName;
var elem = $("#" + id).get(0);
if (elem.settings[0].empty && elem.value == "") {
setting.isValid = true;
}
else {
var regexpress = setting.regexp;
if (setting.datatype == "enum") {
regexpress = eval("regexEnum." + regexpress);
}
if (regexpress == undefined || regexpress == "") {
setting.isValid = false;
return;
}
var exp = new RegExp(regexpress, setting.param);
if (exp.test($("#" + id).val())) {
setting.isValid = true;
}
else {
setting.isValid = false;
}
}
},
FunctionValid: function(returnObj){
var id = returnObj.id;
var str = document.getElementById(id).value;
document.getElementById(id).value = replaceCn(str);
var setting = returnObj.setting;
var srcjo = $("#" + id);
var lb_ret = setting.fun(srcjo.val(), srcjo.get(0));
if (lb_ret != undefined) {
if (typeof lb_ret == "string") {
setting.isValid = false;
returnObj.errormsg = lb_ret;
}
else {
setting.isValid = lb_ret;
}
}
},
InputValid: function(returnObj){
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#" + id);
var elem = srcjo.get(0);
var val = srcjo.val();
var sType = elem.type;
var len = $.formValidator.GetLength(id);
switch (sType) {
case "text":
case "hidden":
case "password":
case "textarea":
case "file":
case "checkbox":
case "select-one":
case "select-multiple":
case "radio":
var li_panduan = false;
if (sType == "select-one" || sType == "select-multiple") {
setting.type = "size";
}
if (setting.type == "size") {
val = len;
li_panduan = true;
}
else {
stype = (typeof setting.min);
if (stype == "number") {
val = (new Number(val)).valueOf();
if (!isNaN(val)) {
li_panduan = true;
}
}
if (stype == "string") {
li_panduan = true;
}
}
if (li_panduan) {
if (val < setting.min || val > setting.max) {
if (val < setting.min && setting.onerrormin) {
returnObj.errormsg = setting.onerrormin;
}
if (val > setting.min && setting.onerrormax) {
returnObj.errormsg = setting.onerrormax;
}
setting.isValid = false;
}
else {
setting.isValid = true;
}
}
else {
setting.isValid = false;
}
break;
}
},
CompareValid: function(returnObj){
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#" + id);
var desjo = $("#" + setting.desID);
setting.isValid = false;
curvalue = srcjo.val();
ls_data = desjo.val();
if (setting.datatype == "number") {
if (!isNaN(curvalue) && !isNaN(ls_data)) {
curvalue = parseFloat(curvalue);
ls_data = parseFloat(ls_data);
}
else {
return;
}
}
switch (setting.operateor) {
case "=":
if (curvalue == ls_data) {
setting.isValid = true;
}
break;
case "!=":
if (curvalue != ls_data) {
setting.isValid = true;
}
break;
case ">":
if (curvalue > ls_data) {
setting.isValid = true;
}
break;
case ">=":
if (curvalue >= ls_data) {
setting.isValid = true;
}
break;
case "<":
if (curvalue < ls_data) {
setting.isValid = true;
}
break;
case "<=":
if (curvalue <= ls_data) {
setting.isValid = true;
}
break;
case "oneok":
if ($.formValidator.IsEmpty(id) ||
$.formValidator.IsEmpty(IsEmpty.desID)) {
setting.isValid = false;
}
else {
setting.isValid = true;
}
}
}
};
$.fn.formValidator = function(msgOptions){
var setting = {
validatorGroup: "1",
empty: false,
submitonce: false,
automodify: false,
onshow: "",
onfocus: "",
oncorrect: "",
onempty: "",
defaultvalue: null,
bind: true,
validateType: "InitValidator"
};
msgOptions = msgOptions ||
{};
$.extend(setting, msgOptions);
return this.each(function(){
var setting_temp = {};
$.extend(setting_temp, setting);
if (!setting.tipid) {
setting_temp.tipid = this.id + "Tip";
}
var tip = setting_temp.tipid;
// yes no����tip div ��û�У��ڵ�ǰ�ı�Ԫ��֮�����һ��
if ($('#' + tip).size() == 0) {
$('#' + this.id).after('<div class="' + tip + '" style="display:none;"></div>');
}
var jqobj = $(this);
$.formValidator.appendValid(this.id, setting_temp);
var initConfig = $.formValidator.getInitConfig(setting.validatorGroup);
var validObjectIds = initConfig.validObjectIds;
if (validObjectIds.indexOf("#" + this.id + " ") == -1) {
if (validObjectIds == "") {
initConfig.validObjectIds = "#" + this.id + ""
}
else {
initConfig.validObjectIds = validObjectIds + ",#" + this.id
}
}
if (!initConfig.alertMessage) {
$.formValidator.SetTipState(tip, "onShow", setting.onshow);
}
var srcTag = this.tagName;
var stype = this.type;
var defaultvalue = setting.defaultvalue;
if (srcTag == "INPUT" || srcTag == "TEXTAREA") {
if (defaultvalue) {
if (stype == "checkbox" || stype == "radio") {
if (stype == "radio") {
if (this.value == defaultvalue) {
jqobj.attr("checked", true)
}
}
else {
jqobj.attr("checked", $.inArray(this.value, defaultvalue) >=
0);
}
}
else {
jqobj.val(defaultvalue);
}
}
jqobj.focus(function(){
if (!initConfig.alertMessage) {
$.formValidator.SetTipState(tip, "onFocus", setting.onfocus);
}
if (stype == "password" || stype == "text" ||
stype == "textarea" ||
stype == "file") {
this.validoldvalue = jqobj.val();
}
});
jqobj.blur(function(){
var settings = this.settings;
var returnObj = $.formValidator.OneIsValid(this.id, 1);
if (returnObj == null) {
return;
}
if (returnObj.ajax >= 0) {
$.formValidator.SetTipState(tip, "onLoad", settings[returnObj.ajax].onwait);
$.formValidator.AjaxValid(returnObj);
}
else {
$.formValidator.ShowMessage(returnObj);
if (!returnObj.isValid) {
var auto = setting.automodify &&
(this.type == "text" ||
this.type == "textarea" ||
this.type == "file");
if (auto && !initConfig.alertMessage) {
alert(returnObj.setting.onerror);
$.formValidator.SetTipState(tip, "onShow", setting.onshow);
}
}
}
});
}
else
if (srcTag == "SELECT") {
if (defaultvalue) {
if (stype == "select-one") {
jqobj.attr("value", defaultvalue);
}
}
// stype=="select-one"?"focus":"click"
jqobj.bind(stype == "select-one" ? "focus" : "click", function(){
if (!initConfig.alertMessage) {
$.formValidator.SetTipState(tip, "onFocus", setting.onfocus);
}
});
jqobj.bind(stype == "select-one" ? "change" : "blur", function(){
var returnObj = $.formValidator.OneIsValid(this.id, 1);
if (returnObj == null) {
return;
}
if (returnObj.ajax >= 0 &&
this.validoldvalue != $(this).val()) {
$.formValidator.AjaxValid(this.id, returnObj.setting);
}
else {
$.formValidator.ShowMessage(returnObj);
}
});
}
});
};
$.fn.InputValidator = function(controlOptions){
var settings = {
isValid: false,
min: 0,
max: 99999999999999,
forceValid: false,
type: "size",
defaultValue: null,
onerror: "input error",
validateType: "InputValidator"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.SelectValidator = function(controlOptions){
var settings = {
isValid: false,
onerror: "please select",
defaultValue: null,
validateType: "SelectValidator"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.CompareValidator = function(controlOptions){
var settings = {
isValid: false,
desID: "",
operateor: "=",
onerror: "input error",
validateType: "CompareValidator"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.RegexValidator = function(controlOptions){
var settings = {
isValid: false,
regexp: "",
param: "i",
datatype: "string",
onerror: "input error",
validateType: "RegexValidator"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.FunctionValidator = function(controlOptions){
var settings = {
isValid: true,
fun: function(){
this.isValid = true;
},
validateType: "FunctionValidator",
onerror: "input error"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.AjaxValidator = function(controlOptions){
var settings = {
isValid: false,
lastValid: "",
type: "GET",
url: "",
addidvalue: true,
datatype: "html",
data: "",
async: true,
cache: false,
beforesend: function(){
return true;
},
success: function(){
return true;
},
complete: function(){
},
processdata: false,
error: function(){
},
buttons: null,
onerror: "input error",
onwait: "Validating ,please waiting...",
validateType: "AjaxValidator"
};
controlOptions = controlOptions ||
{};
$.extend(settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id, settings);
});
};
$.fn.DefaultPassed = function(onshow){
return this.each(function(){
var settings = this.settings;
for (var i = 1; i < settings.length; i++) {
settings[i].isValid = true;
if (!$.formValidator.getInitConfig(settings[0].validatorGroup).alertMessage) {
var ls_style = "onSuccess";
if (onshow) {
ls_style = "onShow"
};
$.formValidator.SetTipState(settings[0].tipid, ls_style, settings[0].oncorrect);
}
}
});
};
$.fn.unformValidator = function(unbind){
return this.each(function(){
this.settings[0].bind = !unbind;
if (unbind) {
$("#" + this.settings[0].tipid).fadeOut(1000);
}
else {
$("#" + this.settings[0].tipid).fadeIn(1000);
}
});
};
})(jQuery);