(function($) {
JxglUtil = {
/**
* getDbChar方法
*
* 一个中文字所占数据库字符个数
* (1)utf-8:3个字节
* (2)其他字符集:2个字节
*/
getDbReplaceChar:function(){
return "***";
},
/**
* format方法
* usage: format("hello {0} ","king")
*/
format:function(source, params) {
if (arguments.length == 1) return source;
if (arguments.length > 2 && params.constructor != Array) {
params = jQuery.makeArray(arguments).slice(1);
}
if (params.constructor != Array) {
params = [params];
}
jQuery.each(params, function(i, n) {
source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
});
return source;
},
/**
* 判断是否在数组中存在
* @array:js数组
* @value:要判断是否存在的值
*/
contains:function(array, value) {
for (i = 0; i < array.length; i++)
if (array[i] == value)
return true;
return false;
},
/**
* 去除重复数据的数组
* @param a 数组
*/
uniqueDataArray:function(a) {
var temp = new Array();
for (var i = 0; i < a.length; i++) {
if (!this.contains(temp, a[i])) {
temp.length += 1;
temp[temp.length - 1] = a[i];
}
}
return temp;
},
/**
* 字符串的字节长度
* @param string 字符串
*/
byteLength:function(string) {
//return string.replace(/[^x00-xff]/g,"**").length;
return string.replace(/[^x00-xff]/g, JxglUtil.getDbReplaceChar()).length;
},
/**
* 判断是否是数组
* @param {} o
* @return {}
*/
isArray:function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
},
/**
* td合并
*/
tdMerge:function(prefix) {
var array = new Array();
var tds = this.format("td[class^='{0}']",prefix);
jQuery(tds).each(function(i) { // 被考评对象td
array[i] = jQuery(this).attr('class');
});
array = this.uniqueDataArray(array); // 去除重复
for (var i = 0; i < array.length; i++) {
jQuery("td[class='" + array[i] + "']").each(function(index) { // 被考评对象td
if (index == 0) {
jQuery(this).attr('rowSpan', jQuery("td[class='" + array[i] + "']").length);
} else {
jQuery(this).remove();
}
});
}
},
/**
* 清空field的值
*/
clearFieldData:function(arrayIds) {
if(this.isArray(arrayIds)) {
for(var i=0;i<arrayIds.length;i++) {
$('#'+arrayIds[i]).val('');
}
} else {
$('#'+arrayIds).val('');
}
},
/**
* 判断是否为空
*/
isEmpty:function(fieldId,message,focus) {
var val = jQuery.trim(jQuery('#'+fieldId).val());
if(val==''){
if(jQuery.trim(message)!='')alert(message);
jQuery('#'+fieldId).focus();
// if(focus!=undefined && focus) jQuery('#'+fieldId).focus();
return true;
} else {
return false;
}
},
/**
* 判断大于最大字符
*/
isThanMaxLenth:function(fieldId,message,maxlength) {
var val = jQuery.trim(jQuery('#'+fieldId).val());
if(this.byteLength(val)>maxlength){
if(jQuery.trim(message)!='')alert(message);
jQuery('#'+fieldId).focus();
return true;
} else {
return false;
}
},
/**
* 绑定只能输入正负数字的text框
* @param name: text name
* @param maxlength: text maxlength
*/
bindInputFloatOnlyEvent:function(name,maxlength) {
if(maxlength==undefined)maxlength=10;
var con = this.format("[name^='{0}']",[name]);
jQuery(con).attr('maxlength',maxlength).bind("keypress",function() {DomUtil.inputFloatOnly();})
.bind("paste",function() {DomUtil.pasteFloatOnly();});
},
/**
* 绑定日期控件YYYY-MM-DD,YYYY-MM,YYYY
*/
bindWdatePicker:function(ids,dateFormat) {
if(this.isArray(ids)) {
for(var i=0;i<ids.length;i++) {
this.bindWdatePickerPrivate('#'+ids[i],dateFormat);
}
} else {
this.bindWdatePickerPrivate('#'+ids,dateFormat);
}
},
/**
* 绑定日期控件根据ID
*/
bindWdatePickerById:function(ids,dateFormat) {
this.bindWdatePicker(ids,dateFormat);
},
/**
* 绑定日期控件根据名称
*/
bindWdatePickerByName:function(names,dateFormat) {
if(this.isArray(names)) {
for(var i=0;i<names.length;i++) {
this.bindWdatePickerPrivate('[name='+names[i]+']',dateFormat);
}
} else {
this.bindWdatePickerPrivate('[name='+names+']',dateFormat);
}
},
bindWdatePickerPrivate:function(condition,dateFormat) {
if(undefined==dateFormat){
jQuery(condition).attr('readonly','readonly').addClass('Wdate').bind('click',function(){
WdatePicker({dateFmt:'yyyy-MM-dd',skin:'whyGreen'});
});
}else{
jQuery(condition).attr('readonly','readonly').addClass('Wdate').bind('click',function(){
WdatePicker({dateFmt:dateFormat,skin:'whyGreen'});
});
}
},
/**
* 针对期间的初始化状态;绑定事件和赋值,和前后时间范围不能超出
* startdateId 开始时间id
* enddateId 结束时间id
* startdateValue 开始时间赋值
* enddateValue 结束时间赋值
* dateFormat 日期格式
* isShowClear 显示清空
*/
initWdatePicker:function(startdateId,enddateId,startdateValue,enddateValue,dateFormat,isShowClear){
if(undefined==dateFormat){
dateFormat = 'yyyy-MM-dd';
}
if(undefined==isShowClear){
isShowClear = false;
}
$j("#"+startdateId).click(function(){
WdatePicker({
maxDate: '#F{$dp.$D(\''+enddateId+'\')}',
dateFmt: dateFormat,
isShowClear: isShowClear,
skin:'whyGreen'
});
}).addClass('Wdate').val(startdateValue).attr('readonly','readonly');
$j("#"+enddateId).click(function(){
WdatePicker({
minDate: '#F{$dp.$D(\''+startdateId+'\')}',
dateFmt: dateFormat,
isShowClear: isShowClear,
skin:'whyGreen'
});
}).addClass('Wdate').val(enddateValue).attr('readonly','readonly');
},
/**
* 限制输入
*/
initWdatePickerValueLimit:function(objectName, limitValue, showClear){
jQuery('[name='+objectName+']').click(function(){
WdatePicker({
maxDate: limitValue,
dateFmt: 'yyyy-MM-dd',
isShowClear: showClear,
skin:'whyGreen'
});
}).addClass('Wdate').attr('readonly','readonly');
},
/**
* 给需要验证的元素绑定验证时用到的属性
* 主要是caption和class属性
*
* @param {Object} CheckObjArr 绑定对象的数组
* @return 可返回绑定过的对象id数组
*/
bindValidateAttribute:function(CheckObjArr){
var ids = new Array();
if(this.isArray(CheckObjArr)){
for(var i=0; i<CheckObjArr.length; i++){
jQuery("#"+CheckObjArr[i].id).attr("caption",CheckObjArr[i].caption);
jQuery("#"+CheckObjArr[i].id).addClass(CheckObjArr[i].clazz);
ids.push(CheckObjArr[i].id);
}
}else{
jQuery("#"+CheckObjArr.id).attr("caption",CheckObjArr.caption);
jQuery("#"+CheckObjArr.id).addClass(CheckObjArr.clazz);
ids.push(CheckObjArr.id);
}
return ids;
},
/**
* 给需要验证的元素使用name属性来绑定验证时用到的属性
* 主要是caption和class属性
*
* @param {Object} CheckObjArr 绑定对象的数组
* @return 可返回绑定过的对象name数组
*/
bindValidateAttributeByName:function(CheckObjArr){
var names = new Array();
if(this.isArray(CheckObjArr)){
for(var i=0; i<CheckObjArr.length; i++){
jQuery("[name=" + CheckObjArr[i].name + "]").each(function(){
jQuery(this).attr("caption",CheckObjArr[i].caption).addClass(CheckObjArr[i].clazz);
});
names.push(CheckObjArr[i].name);
}
}else{
jQuery("[name=" + CheckObjArr.name + "]").each(function(){
jQuery(this).attr("caption",CheckObjArr.caption).addClass(CheckObjArr.clazz);
});
names.push(CheckObjArr.name);
}
return names;
},
/**
* 转义JSon值
*
* @param originalValue 原始值
* @return 转义后的值
*/
transferJSonValue:function(originalValue){
if(originalValue == null || originalValue==undefined || originalValue==""){
return "";
}
return encodeURIComponent(originalValue.replace(new RegExp('(["\"])', 'g'),"\\\""));
}
}
})(jQuery)
/**
* 待校验的对象,用于构造进行校验属性设定的值
*
* @param pId 对象的ID
* @param pCaption 对象的名称
* @param pClass
* @param pName 元素的name属性
*/
CheckObj = function(pId,pCaption,pClass,pName){
this.id = pId;
this.caption = pCaption;
this.clazz = pClass;
this.name = pName;
};
js调用: JxglUtil.tdMerge('swjg');
html:<td class="swjg_11"><a name="group_names" href="javascript:doQuery()" class="list_textlink">11</a></td>
本文深入探讨了JavaScript库JxglUtil的功能,包括数据库字符转换、字符串格式化、数组操作、字符字节长度判断、数组去重、字段清空、空值检查、字符长度限制、正负数输入绑定、日期选择器绑定、期间初始化状态设置、验证属性绑定、元素名称验证属性绑定、JSON值转义、待校验对象属性设定等功能。

被折叠的 条评论
为什么被折叠?



