| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- /**
- * jQuery ligerUI 1.2.4
- *
- * http://ligerui.com
- *
- * Author daomi 2014 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerRadioList = function (options)
- {
- return $.ligerui.run.call(this, "ligerRadioList", arguments);
- };
- $.ligerDefaults.RadioList = {
- rowSize: 3, //每行显示元素数
- valueField: 'id', //值成员
- textField: 'text', //显示成员
- valueFieldID:null, //隐藏域
- name : null, //表单名
- data: null, //数据
- parms: null, //ajax提交表单
- url: null, //数据源URL(需返回JSON)
- onSuccess: null,
- onError: null,
- css: null, //附加css
- value: null, //值
- valueFieldCssClass : null
- };
- //扩展方法
- $.ligerMethos.RadioList = $.ligerMethos.RadioList || {};
- $.ligerui.controls.RadioList = function (element, options)
- {
- $.ligerui.controls.RadioList.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.RadioList.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'RadioList';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.RadioList;
- },
- _init: function ()
- {
- $.ligerui.controls.RadioList.base._init.call(this);
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.data = p.data;
- g.valueField = null; //隐藏域(保存值)
-
- if (p.valueFieldID)
- {
- g.valueField = $("#" + p.valueFieldID + ":input,[name=" + p.valueFieldID + "]:input");
- if (g.valueField.length == 0) g.valueField = $('<input type="hidden"/>');
- g.valueField[0].id = g.valueField[0].name = p.valueFieldID;
- }
- else
- {
- g.valueField = $('<input type="hidden"/>');
- g.valueField[0].id = g.valueField[0].name = g.id + "_val";
- }
- if (g.valueField[0].name == null) g.valueField[0].name = g.valueField[0].id;
- if (p.valueFieldCssClass)
- {
- g.valueField.addClass(p.valueFieldCssClass);
- }
- g.valueField.attr("data-ligerid", g.id);
- g.radioList = $(this.element);
- g.radioList.html('<div class="l-radiolist-inner"><table cellpadding="0" cellspacing="0" border="0" class="l-radiolist-table"></table></div>').addClass("l-radiolist").append(g.valueField);
- g.radioList.table = $("table:first", g.radioList);
-
- p.value = g.valueField.val() || p.value;
- g.set(p);
- g._addClickEven();
- },
- destroy: function ()
- {
- if (this.radioList) this.radioList.remove();
- this.options = null;
- $.ligerui.remove(this);
- },
- clear : function()
- {
- this._changeValue("");
- this.trigger('clear');
- },
- _setCss : function(css)
- {
- if (css) {
- this.radioList.addClass(css);
- }
- },
- _setDisabled: function (value)
- {
- //禁用样式
- if (value)
- {
- this.radioList.addClass('l-radiolist-disabled');
- $("input:radio", this.radioList).attr("disabled", true);
- } else
- {
- this.radioList.removeClass('l-radiolist-disabled');
- $("input:radio", this.radioList).removeAttr("disabled");
- }
- },
- _setWidth: function (value)
- {
- this.radioList.width(value);
- },
- _setHeight: function (value)
- {
- this.radioList.height(value);
- },
- indexOf : function(item)
- {
- var g = this, p = this.options;
- if (!g.data) return -1;
- for (var i = 0, l = g.data.length; i < l; i++)
- {
- if (typeof (item) == "object")
- {
- if (g.data[i] == item) return i;
- } else
- {
- if (g.data[i][p.valueField].toString() == item.toString()) return i;
- }
- }
- return -1;
- },
- removeItems : function(items)
- {
- var g = this;
- if (!g.data) return;
- $(items).each(function (i,item)
- {
- var index = g.indexOf(item);
- if (index == -1) return;
- g.data.splice(index, 1);
- });
- g.refresh();
- },
- removeItem: function (item)
- {
- if (!this.data) return;
- var index = this.indexOf(item);
- if (index == -1) return;
- this.data.splice(index, 1);
- this.refresh();
- },
- insertItem: function (item,index)
- {
- var g = this;
- if (!g.data) g.data = [];
- g.data.splice(index, 0, item);
- g.refresh();
- },
- addItems: function (items)
- {
- var g = this;
- if (!g.data) g.data = [];
- $(items).each(function (i, item)
- {
- g.data.push(item);
- });
- g.refresh();
- },
- addItem: function (item)
- {
- var g = this;
- if (!g.data) g.data = [];
- g.data.push(item);
- g.refresh();
- },
- _setValue: function (value)
- {
- var g = this, p = this.options;
- p.value = value;
- this._dataInit();
- },
- setValue: function (value)
- {
- this._setValue(value);
- },
- _setUrl: function (url) {
- if (!url) return;
- var g = this, p = this.options;
- $.ajax({
- type: 'post',
- url: url,
- data: p.parms,
- cache: false,
- dataType: 'json',
- success: function (data) {
- g.setData(data);
- g.trigger('success', [data]);
- },
- error: function (XMLHttpRequest, textStatus) {
- g.trigger('error', [XMLHttpRequest, textStatus]);
- }
- });
- },
- setUrl: function (url) {
- return this._setUrl(url);
- },
- setParm: function (name, value) {
- if (!name) return;
- var g = this;
- var parms = g.get('parms');
- if (!parms) parms = {};
- parms[name] = value;
- g.set('parms', parms);
- },
- clearContent: function ()
- {
- var g = this, p = this.options;
- $("table", g.radioList).html("");
- },
- _setData : function(data)
- {
- this.setData(data);
- },
- setData: function (data)
- {
- var g = this, p = this.options;
- if (!data || !data.length) return;
- g.data = data;
- g.refresh();
- g.updateStyle();
- },
- refresh:function()
- {
- var g = this, p = this.options, data = this.data;
- this.clearContent();
- if (!data) return;
- var out = [], rowSize = p.rowSize, appendRowStart = false, name = p.name || g.id;
- for (var i = 0; i < data.length; i++)
- {
- var val = data[i][p.valueField], txt = data[i][p.textField], id = g.id + "-" + i;
- var newRow = i % rowSize == 0;
- //0,5,10
- if (newRow)
- {
- if (appendRowStart) out.push('</tr>');
- out.push("<tr>");
- appendRowStart = true;
- }
- out.push("<td><input type='radio' name='" + name + "' value='" + val + "' id='" + id + "'/><label for='" + id + "'>" + txt + "</label></td>");
- }
- if (appendRowStart) out.push('</tr>');
- g.radioList.table.append(out.join(''));
- },
- _getValue: function ()
- {
- var g = this, p = this.options, name = p.name || g.id;
- return $('input:radio[name="' + name + '"]:checked').val();
- },
- getValue: function ()
- {
- //获取值
- return this._getValue();
- },
- updateStyle: function ()
- {
- this._dataInit();
- },
- _dataInit: function ()
- {
- var g = this, p = this.options;
- var value = g.valueField.val() || g._getValue() || p.value;
- g._changeValue(value);
- },
- //设置值到 隐藏域
- _changeValue: function (newValue)
- {
- var g = this, p = this.options, name = p.name || g.id;
- $("input:radio[name='" + name + "']", g.radioList).each(function ()
- {
- this.checked = this.value == newValue;
- });
- g.valueField.val(newValue);
- g.selectedValue = newValue;
- },
- _addClickEven: function ()
- {
- var g = this, p = this.options;
- //选项点击
- g.radioList.click(function (e)
- {
- var value = g.getValue();
- if (value) g.valueField.val(value);
- });
- }
- });
-
- })(jQuery);
|