www.gusucode.com > ecShop PHP网上商城系统 粉丝修复版 v2.7.3源码程序 > ecshop_xf_v2.7.3/admin/js/selectzone.js
/* $Id : selectzone.js 4824 2007-01-31 08:23:56Z paulgao $ */ /* * * SelectZone 类 */ function SelectZone() { this.filters = new Object(); this.id = arguments[0] ? arguments[0] : 1; // 过滤条件 this.sourceSel = arguments[1] ? arguments[1] : null; // 1 商品关联 2 组合、赠品(带价格) this.targetSel = arguments[2] ? arguments[2] : null; // 源 select 对象 this.priceObj = arguments[3] ? arguments[3] : null; // 目标 select 对象 this.filename = location.href.substring((location.href.lastIndexOf("/")) + 1, location.href.lastIndexOf("?")) + "?is_ajax=1"; var _self = this; /** * 载入源select对象的options * @param string funcName ajax函数名称 * @param function response 处理函数 */ this.loadOptions = function(act, filters) { Ajax.call(this.filename+"&act=" + act, filters, this.loadOptionsResponse, "GET", "JSON"); } /** * 将返回的数据解析为options的形式 * @param result 返回的数据 */ this.loadOptionsResponse = function(result, txt) { if (!result.error) { _self.createOptions(_self.sourceSel, result.content); } if (result.message.length > 0) { alert(result.message); } return; } /** * 检查对象 * @return boolean */ this.check = function() { /* source select */ if ( ! this.sourceSel) { alert('source select undefined'); return false; } else { if (this.sourceSel.nodeName != 'SELECT') { alert('source select is not SELECT'); return false; } } /* target select */ if ( ! this.targetSel) { alert('target select undefined'); return false; } else { if (this.targetSel.nodeName != 'SELECT') { alert('target select is not SELECT'); return false; } } /* price object */ if (this.id == 2 && ! this.priceObj) { alert('price obj undefined'); return false; } return true; } /** * 添加选中项 * @param boolean all * @param string act * @param mix arguments 其他参数,下标从[2]开始 */ this.addItem = function(all, act) { if (!this.check()) { return; } var selOpt = new Array(); for (var i = 0; i < this.sourceSel.length; i ++ ) { if (!this.sourceSel.options[i].selected && all == false) continue; if (this.targetSel.length > 0) { var exsits = false; for (var j = 0; j < this.targetSel.length; j ++ ) { if (this.targetSel.options[j].value == this.sourceSel.options[i].value) { exsits = true; break; } } if (!exsits) { selOpt[selOpt.length] = this.sourceSel.options[i].value; } } else { selOpt[selOpt.length] = this.sourceSel.options[i].value; } } if (selOpt.length > 0) { var args = new Array(); for (var i=2; i<arguments.length; i++) { args[args.length] = arguments[i]; } Ajax.call(this.filename + "&act="+act+"&add_ids=" +selOpt.toJSONString(), args, this.addRemoveItemResponse, "GET", "JSON"); } } /** * 删除选中项 * @param boolean all * @param string act */ this.dropItem = function(all, act) { if (!this.check()) { return; } var arr = new Array(); for (var i = this.targetSel.length - 1; i >= 0 ; i -- ) { if (this.targetSel.options[i].selected || all) { arr[arr.length] = this.targetSel.options[i].value; } } if (arr.length > 0) { var args = new Array(); for (var i=2; i<arguments.length; i++) { args[args.length] = arguments[i]; } Ajax.call(this.filename + "&act="+act+"&drop_ids=" + arr.toJSONString(), args, this.addRemoveItemResponse, 'GET', 'JSON'); } } /** * 处理添加项返回的函数 */ this.addRemoveItemResponse = function(result,txt) { if (!result.error) { _self.createOptions(_self.targetSel, result.content); } if (result.message.length > 0) { alert(result.message); } } /** * 为select元素创建options */ this.createOptions = function(obj, arr) { obj.length = 0; for (var i=0; i < arr.length; i++) { var opt = document.createElement("OPTION"); opt.value = arr[i].value; opt.text = arr[i].text; opt.id = arr[i].data; obj.options.add(opt); } } }