87,993
社区成员
发帖
与我相关
我的任务
分享
/*
* jquery select elements for xyy
*
* Copyright (c) 2009 xyy
*
* jquery.select 操作类
*
*/
(function(jQuery) {
jQuery.fn.extend({
/// <summary>
/// select项的长度
/// </summary>
/// <param name="size" type="select Element">
/// 1: size - 获取select Element对象项的长度
/// </param>
/// <returns type="int" />
size: function() {
return jQuery(this).get(0).options.length;
},
/// <summary>
/// getIndex索引
/// </summary>
/// <param name="getIndex" type="select Element">
/// 1: getIndex - 获取select Element对象当前选定项的索引
/// </param>
/// <returns type="int" />
getIndex: function() {
return jQuery(this).get(0).selectedIndex;
},
/// <summary>
/// getText文本值
/// </summary>
/// <param name="getText" type="select Element">
/// 1: getText - 获取select Element对象当前选定项的文本值
/// </param>
/// <returns type="String" />
getText: function() {
return jQuery(this).size() == 0 ?
null :
jQuery(this).get(0).options[this.getIndex()].text;
},
/// <summary>
/// getValue实际值
/// </summary>
/// <param name="getValue" type="select Element">
/// 1: getValue - 获取select Element对象当前选定项的实际值
/// </param>
/// <returns type="int" />
getValue: function() {
return jQuery(this).size() == 0 ?
null :
jQuery(this).val();
},
/// <summary>
/// setValue定位
/// </summary>
/// <param name="setValue" type="select Element">
/// 1: setValue - 定位select Element对象项值为当前的实际值
/// </param>
setValue: function(value) {
jQuery(this).get(0).value = value;
},
/// <summary>
/// setText定位
/// </summary>
/// <param name="setText" type="select Element">
/// 1: setText - 定位select Element对象项值为当前的文本值
/// </param>
setText: function(text) {
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].text == text) {
jQuery(this).get(0).options[i].selected = true;
break;
}
}
},
/// <summary>
/// setIndex定位
/// </summary>
/// <param name="setIndex" type="select Element">
/// 1: setIndex - 定位select Element对象项值为当前的索引值
/// </param>
setIndex: function(index) {
var len = jQuery(this).size();
(index >= len || index < 0) ?
false :
jQuery(this).get(0).selectedIndex = index;
},
/// <summary>
/// isExist检测
/// </summary>
/// <param name="isExist" type="select Element">
/// 1: isExist - 检测select Element对象项值是否存在
/// </param>
/// <returns type="Boolean" />
isExist: function(value) {
var isExist = false;
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].value == value) {
isExist = true;
break;
}
}
return isExist;
},
/// <summary>
/// addOptions添加项
/// </summary>
/// <param name="addOptions" type="select Element">
/// 1: addOptions - 添加select Element对象项
/// </param>
addOptions: function(text, value) {
!this.isExist(value) ?
jQuery(this).get(0).options.add(
new Option(text, value)
) :
false;
},
/// <summary>
/// removeItem删除项
/// </summary>
/// <param name="removeItem" type="select Element">
/// 1: removeItem - 删除select Element对象项
/// </param>
removeItem: function(value) {
if (jQuery(this).isExist(value)) {
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].value == value) {
jQuery(this).get(0).remove(i);
break;
}
}
}
},
/// <summary>
/// removeIndex删除索引项
/// </summary>
/// <param name="removeIndex" type="select Element">
/// 1: removeIndex - 删除select Element对象索引项
/// </param>
removeIndex: function(index) {
var len = jQuery(this).size();
(index >= len || index < 0) ?
false :
jQuery(this).get(0).remove(index);
},
/// <summary>
/// removeSelected删除选中项
/// </summary>
/// <param name="removeSelected" type="select Element">
/// 1: removeSelected - 删除select Element对象选中项
/// </param>
removeSelected: function() {
var index = jQuery(this).getIndex();
this.removeIndex(index);
},
/// <summary>
/// clear删除所有项
/// </summary>
/// <param name="clear" type="select Element">
/// 1: clear - 删除select Element对象所有项
/// </param>
clear: function() {
jQuery(this).get(0).options.length = 0;
}
});
})(jQuery);
/*
* jquery select elements for xyy
*
* Copyright (c) 2009 xyy
*
* jquery.select.demo 无限下拉选项菜单
*
*/
(function(jQuery) {
jQuery.extend({
manageSelect: function(o) {
o = jQuery.extend({
Containers: '',
className: ''
}, o);
return new jQuery.SelectManager(o);
},
SelectManager: function(o) {
this.opt = o;
}
});
jQuery.extend(jQuery.SelectManager.prototype, {
add: function(o) {
var opt = this.opt, id = o.id, $id = '#' + o.id, $this = this;
jQuery(opt.Containers).append(
'<lable>{0}</lable><select id="{1}" class="{2}"></select>'
.format((o.title != undefined ? o.title : ''),
id,
opt.className
)
);
$this.addDefault($this, $($id));
$this.addOptions($($id), o.data);
if (typeof o.change === 'boolean' && o.change) {
var chObj = jQuery($id);
chObj.change(function() {
var val = chObj.val(),
text = chObj.getText(),
index = chObj.getIndex();
if (val == 0)
return;
else {
if (typeof o.changeUrl === 'string' &&
typeof o.changeUrl !== 'undefined') {
$this.ajaxData($this, o, val, text, index);
} else {
if (typeof o.callback === 'function')
o.callback(text, val, index);
}
}
});
}
},
addOptions: function(obj, data) {
if (typeof data === 'object')
for (var item in data)
obj.addOptions(data[item].filedText, data[item].filedValue);
},
ajaxData: function($this, o, val, text, index) {
var params = unescape(jQuery.param(o.changeData)).format(escape(val), escape(text));
jQuery.getJSON(o.changeUrl, params, function(data) {
if (typeof o.changeID !== 'undefined') {
var obj = jQuery('#' + o.changeID);
obj.clear();
$this.addDefault($this, obj);
$this.addOptions(obj, data);
}
if (typeof o.callback === 'function')
o.callback(text, val, index, data);
});
},
addDefault: function($this, $id) {
$this.addOptions($($id), [{ filedValue: 0, filedText: '请选择'}]);
}
});
jQuery.extend(String.prototype, {
format: function() {
if (arguments.length == 0)
return null;
var str = this;
for (var i = 0; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
}
});
})(jQuery);
