You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

803 lines
30 KiB

  1. /*
  2. * 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园(http://www.learun.cn)
  3. * Copyright (c) 2013-2018 北京泉江科技有限公司
  4. * 创建人:Learun智慧校园-前端开发组
  5. * 日 期:2017.03.22
  6. * 描 述:learunSelect(普通,多选,树形数据,gird,搜索,输入框选择器)-渲染数据在点击的时候触发,考虑到在一个表单上有超级多的下拉框的绑定情况(这里需要考虑赋值的特殊性)
  7. */
  8. (function ($, learun) {
  9. "use strict";
  10. $(function () {
  11. $(document).click(function (e) {
  12. e = e || Window.event;
  13. var et = e.target || e.srcElement;
  14. if (et.tagName != 'BODY') {
  15. $('.lr-select-option').slideUp(150);
  16. $('.lr-select').removeClass('lr-select-focus');
  17. }
  18. });
  19. });
  20. $.lrselect = {
  21. htmlToData: function ($self) {
  22. var dfop = $self[0]._lrselect.dfop;
  23. var $ul = $self.find('ul');
  24. dfop.data = [];
  25. $ul.find('li').each(function () {
  26. var $li = $(this);
  27. var point = { id: $li.attr('data-value'), text: $li.html() };
  28. dfop.data.push(point);
  29. });
  30. $ul.remove();
  31. $ul = null;
  32. dfop = null;
  33. },
  34. calc: function ($this, op) { // 计算高度和方向
  35. var bodyHeight = 0;
  36. var top = 0;
  37. bodyHeight = $('body').height();
  38. top = $this.offset().top;
  39. var topH = top - 1;
  40. var bottomH = bodyHeight - top - 30;
  41. var selctH = 2;
  42. // 计算选择框的高度
  43. if (op.allowSearch) {
  44. selctH += 30;
  45. }
  46. selctH += op.data.length * 26;
  47. if (op.placeholder) {
  48. selctH += 25;
  49. }
  50. if ((op.type === 'tree' || op.type === 'treemultiple') && op.data.length > 1) {
  51. selctH = 200;
  52. }
  53. selctH = op.height || selctH;
  54. var res = {
  55. type: 0, // 0 向下 1 向上
  56. height: 0
  57. };
  58. if (bottomH > 130 || bottomH > topH || bottomH > selctH) { // 如果能够显示四条数据和搜索框就采用下拉方式
  59. res.height = bottomH > selctH ? selctH : bottomH;
  60. } else {
  61. res.type = 1;
  62. res.height = topH > selctH ? selctH : topH;
  63. }
  64. return res;
  65. },
  66. initRender: function (dfop, $self) {
  67. $('#learun_select_option_' + dfop.id).remove();
  68. var $option = $('<div class="lr-select-option" id="learun_select_option_' + dfop.id + '"></div>');
  69. var $optionContent = $('<div class="lr-select-option-content"></div>');
  70. var $ul = $('<ul id="learun_select_option_content' + dfop.id + '"></ul>');
  71. //$optionContent.css('max-height', dfop.maxHeight + 'px');
  72. $option.hide();
  73. $optionContent.html($ul);
  74. $option.prepend($optionContent);
  75. if (dfop.allowSearch) {
  76. var $search = $('<div class="lr-select-option-search"><input type="text" placeholder="搜索关键字"><span class="input-query" title="查询"><i class="fa fa-search"></i></span></div>');
  77. $option.append($search);
  78. $option.css('padding-bottom', '25px');
  79. $search.on('click', function () { return false; });
  80. $search.find('input').on("keypress", function (e) {
  81. e = e || window.event;
  82. if (e.keyCode === 13) {
  83. var $this = $(this);
  84. var keyword = $this.val();
  85. var $option = $this.parents('.lr-select-option');
  86. var dfop = $option[0].dfop;
  87. if (dfop.type === "tree" || dfop.type === "treemultiple") {
  88. var $optionContent = $this.parent().prev();
  89. $optionContent.lrtreeSet('search', { keyword: keyword });
  90. }
  91. else if (dfop.type === "default" || dfop.type === "multiple") {
  92. for (var i = 0, l = dfop.data.length; i < l; i++) {
  93. var _item = dfop.data[i];
  94. if (!keyword || _item[dfop.text].indexOf(keyword) != -1) {
  95. _item._lrhide = false;
  96. }
  97. else {
  98. _item._lrhide = true;
  99. }
  100. }
  101. $.lrselect.render(dfop);
  102. }
  103. $option = null;
  104. }
  105. });
  106. }
  107. $('body').append($option);
  108. $option.on('click', $.lrselect.itemClick);
  109. $option[0].dfop = dfop;
  110. $self.append('<div class="lr-select-placeholder" >==' + dfop.placeholder + '==</div>');
  111. $self.attr('type', 'lrselect').addClass('lr-select');
  112. if (dfop.type != 'tree') {
  113. $optionContent.lrscroll();
  114. }
  115. },
  116. render: function (dfop) {
  117. switch (dfop.type) {
  118. case 'default':
  119. $.lrselect.defaultRender(dfop);
  120. break;
  121. case 'tree':
  122. case 'treemultiple':
  123. $.lrselect.treeRender(dfop);
  124. break;
  125. case 'gird':
  126. break;
  127. case 'multiple':
  128. $.lrselect.multipleRender(dfop);
  129. break;
  130. default:
  131. break;
  132. }
  133. dfop.isrender = true;
  134. },
  135. defaultRender: function (dfop) {
  136. var $ul = $('#learun_select_option_content' + dfop.id);
  137. $ul.html("");
  138. if (dfop.placeholder) {
  139. $ul.append('<li data-value="-1" class="lr-selectitem-li">==' + dfop.placeholder + '==</li>');
  140. }
  141. for (var i = 0, l = dfop.data.length; i < l; i++) {
  142. var item = dfop.data[i];
  143. if (!item._lrhide) {
  144. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" codeTwo="' + item[dfop.codeTwo] + '" value="'+item[dfop.value]+'" title="' + item[dfop.text] + '" >' + item[dfop.text] + '</li>');
  145. $ul.append($li);
  146. }
  147. }
  148. },
  149. multipleRender: function (dfop) {
  150. var $ul = $('#learun_select_option_content' + dfop.id);
  151. $ul.html("");
  152. if (dfop.placeholder) {
  153. $ul.append('<li data-value="-1" class="lr-selectitem-li" >==' + dfop.placeholder + '==</li>');
  154. }
  155. for (var i = 0, l = dfop.data.length; i < l; i++) {
  156. var item = dfop.data[i];
  157. if (!item._lrhide) {
  158. if (!!dfop.multipleMapValue && dfop.multipleMapValue[i] != undefined) {
  159. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" ><img class="lr-select-node-cb" src="/Content/images/learuntree/checkbox_1.png">' + item[dfop.text] + '</li>');
  160. $ul.append($li);
  161. }
  162. else {
  163. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" ><img class="lr-select-node-cb" src="/Content/images/learuntree/checkbox_0.png">' + item[dfop.text] + '</li>');
  164. $ul.append($li);
  165. }
  166. }
  167. }
  168. },
  169. treeRender: function (dfop) {
  170. var $option = $('#learun_select_option_' + dfop.id);
  171. $option.find('.lr-select-option-content').remove();
  172. var $optionContent = $('<div class="lr-select-option-content"></div>');
  173. $option.prepend($optionContent);
  174. //$optionContent.css('max-height', dfop.maxHeight + 'px');
  175. dfop.data.unshift({
  176. "id": "-1",
  177. "text": '==' + dfop.placeholder + '==',
  178. "value": "-1",
  179. "icon": "-1",
  180. "parentnodes": "0",
  181. "showcheck": false,
  182. "isexpand": false,
  183. "complete": true,
  184. "hasChildren": false,
  185. "ChildNodes": []
  186. });
  187. var treeop = {
  188. data: dfop.data,
  189. nodeClick: $.lrselect.treeNodeClick
  190. };
  191. if (dfop.type === 'treemultiple') {
  192. treeop.nodeClick = $.lrselect.treeNodeClick2;
  193. treeop.nodeCheck = $.lrselect.treeNodeCheck;
  194. }
  195. $optionContent.lrtree(treeop);
  196. },
  197. bindEvent: function ($self) {
  198. $self.unbind('click');
  199. $self.on('click', $.lrselect.click);
  200. },
  201. click: function (e) {
  202. var $this = $(this);
  203. if ($this.attr('readonly') == 'readonly' || $this.attr('disabled') == 'disabled') {
  204. return false;
  205. }
  206. var dfop = $this[0]._lrselect.dfop;
  207. if (!dfop.isload) {
  208. return false;
  209. }
  210. if (!dfop.isrender) {
  211. $.lrselect.render(dfop);
  212. }
  213. // 选中下拉框的某一项
  214. e = e || Window.event;
  215. var et = e.target || e.srcElement;
  216. var $et = $(et);
  217. var $option = $('#learun_select_option_' + dfop.id);
  218. if ($option.is(":hidden")) {
  219. $('.lr-select').removeClass('lr-select-focus');
  220. $('.lr-select-option').slideUp(150);
  221. $this.addClass('lr-select-focus');
  222. var width = dfop.width || $this.parent().width();//+ (dfop.diffWidth || 0);
  223. var height = $this.innerHeight();
  224. var top = $this.offset().top;
  225. var left = $this.offset().left;
  226. var res = $.lrselect.calc($this, dfop);
  227. if (res.type == 0) {
  228. $option.css({ 'width': width, 'top': top + height + 2, 'left': left, 'height': res.height }).show();
  229. }
  230. else {
  231. $option.css({ 'width': width, 'top': top - res.height - 2, 'left': left, 'height': res.height }).show();
  232. }
  233. $option.find('.lr-select-option-search').find('input').select();
  234. if (dfop.type != 'multiple') {
  235. $option.find('.selected').removeClass('selected');
  236. if (dfop._index != -1) {
  237. $option.find('.lr-selectitem-li[data-value="' + dfop._index + '"]').addClass('selected');
  238. }
  239. }
  240. }
  241. else {
  242. $option.slideUp(150);
  243. $this.removeClass('lr-select-focus');
  244. }
  245. dfop = null;
  246. e.stopPropagation();
  247. },
  248. itemClick: function (e) {
  249. // 选中下拉框的某一项
  250. e = e || Window.event;
  251. var et = e.target || e.srcElement;
  252. var $et = $(et);
  253. var $option = $(this);
  254. var dfop = $option[0].dfop;
  255. var $this = $('#' + dfop.id);
  256. if (dfop.type != 'multiple') {
  257. if ($et.hasClass('lr-selectitem-li')) {
  258. var _index = $et.attr('data-value');
  259. $option.find('.selected').removeClass('selected');
  260. $et.addClass('selected');
  261. if (dfop._index != _index) {
  262. var $inputText = $this.find('.lr-select-placeholder');
  263. if (_index == -1) {
  264. $inputText.css('color', '#999');
  265. $inputText.html('==' + dfop.placeholder + '==');
  266. }
  267. else {
  268. $inputText.css('color', '#000');
  269. $inputText.html(dfop.data[_index][dfop.text]);
  270. }
  271. dfop._index = _index;
  272. $this.trigger("change");
  273. if (dfop.select) {
  274. dfop.select(dfop.data[_index]);
  275. }
  276. }
  277. $option.slideUp(150);
  278. $this.removeClass('lr-select-focus');
  279. }
  280. }
  281. else {
  282. if ($et.hasClass('lr-selectitem-li') || $et.hasClass('lr-select-node-cb')) {
  283. var $inputText = $this.find('.lr-select-placeholder');
  284. var $cbobj = $et.find('.lr-select-node-cb');
  285. var _index = $et.attr('data-value');
  286. if ($et.hasClass('lr-select-node-cb')) {
  287. $cbobj = $et;
  288. _index = $et.parent().attr('data-value');
  289. }
  290. dfop.multipleMapValue = dfop.multipleMapValue || {};
  291. dfop.multipleValue = dfop.multipleValue || [];
  292. dfop.multipleText = dfop.multipleText || [];
  293. if (_index == -1) {
  294. $inputText.css('color', '#999');
  295. $inputText.html('==' + dfop.placeholder + '==');
  296. dfop.multipleMapValue = {};
  297. dfop.multipleValue = [];
  298. dfop.multipleText = [];
  299. $option.find('.lr-select-node-cb[src$="checkbox_1.png"]').attr('src', '/Content/images/learuntree/checkbox_0.png');
  300. $option.slideUp(150);
  301. $this.removeClass('lr-select-focus');
  302. }
  303. else {
  304. var selected = true;
  305. if (dfop.multipleMapValue[_index] == undefined) {
  306. $inputText.css('color', '#000');
  307. dfop.multipleValue.push(dfop.data[_index][dfop.value]);
  308. dfop.multipleText.push(dfop.data[_index][dfop.text]);
  309. dfop.multipleMapValue[_index] = dfop.data[_index];
  310. $inputText.html(String(dfop.multipleText));
  311. $cbobj.attr('src', '/Content/images/learuntree/checkbox_1.png');
  312. }
  313. else {
  314. dfop.multipleValue = [];
  315. dfop.multipleText = [];
  316. delete dfop.multipleMapValue[_index];
  317. $.each(dfop.multipleMapValue, function (_id, _item) {
  318. dfop.multipleValue.push(_item[dfop.value]);
  319. dfop.multipleText.push(_item[dfop.text]);
  320. });
  321. if (dfop.multipleText.length == 0) {
  322. $inputText.css('color', '#999');
  323. $inputText.html('==' + dfop.placeholder + '==');
  324. }
  325. else {
  326. $inputText.html(String(dfop.multipleText));
  327. }
  328. selected = false;
  329. $cbobj.attr('src', '/Content/images/learuntree/checkbox_0.png');
  330. }
  331. $this.trigger("change");
  332. if (dfop.select) {
  333. dfop.select(dfop.data[_index], selected, $this);
  334. }
  335. }
  336. }
  337. }
  338. e.stopPropagation();
  339. },
  340. treeNodeClick: function (item, $item) {
  341. var $option = $item.parents('.lr-select-option');
  342. var dfop = $option[0].dfop;
  343. $option.slideUp(150);
  344. var $select = $('#' + dfop.id);
  345. $select.removeClass('lr-select-focus');
  346. dfop.currtentItem = item;
  347. var $inputText = $select.find('.lr-select-placeholder');
  348. $inputText.html(dfop.currtentItem.text);
  349. if (item.value == '-1') {
  350. $inputText.css('color', '#999');
  351. }
  352. else {
  353. $inputText.css('color', '#000');
  354. }
  355. $select.trigger("change");
  356. if (dfop.select) {
  357. dfop.select(dfop.currtentItem);
  358. }
  359. $option = null;
  360. $select = null;
  361. },
  362. treeNodeClick2: function (item, $item) {
  363. var $tree = $item.parents('.lr-select-option-content');
  364. var $option = $item.parents('.lr-select-option');
  365. var dfop = $option[0].dfop;
  366. var $select = $('#' + dfop.id);
  367. $select.removeClass('lr-select-focus');
  368. dfop.currtentItems = [];
  369. if (item.value == '-1') {
  370. $item.parents('.lr-select-option').slideUp(150);
  371. $tree.lrtreeSet('allNoCheck');
  372. var $inputText = $select.find('.lr-select-placeholder');
  373. $inputText.html(item.text);
  374. $inputText.css('color', '#999');
  375. $select.trigger("change");
  376. if (dfop.select) {
  377. dfop.select([]);
  378. }
  379. }
  380. $tree = null;
  381. $option = null;
  382. $select = null;
  383. },
  384. treeNodeCheck: function (item, $item) {
  385. var $tree = $item.parents('.lr-select-option-content');
  386. var $option = $item.parents('.lr-select-option');
  387. var dfop = $option[0].dfop;
  388. var $select = $('#' + dfop.id);
  389. var $inputText = $select.find('.lr-select-placeholder');
  390. $select.removeClass('lr-select-focus');
  391. var data = $tree.lrtreeSet('getCheckNodesEx');
  392. dfop.currtentItems = data;
  393. var text = "";
  394. for (var i = 0, l = data.length; i < l; i++) {
  395. var one = data[i];
  396. if (text != "") {
  397. text += ",";
  398. }
  399. text += one.text;
  400. }
  401. if (text == "") {
  402. $inputText.html("==" + dfop.placeholder + "==");
  403. $inputText.css('color', '#999');
  404. }
  405. else {
  406. $inputText.text(text);
  407. $inputText.css('color', '#000');
  408. }
  409. $select.trigger("change");
  410. if (dfop.select) {
  411. dfop.select(dfop.currtentItems);
  412. }
  413. $tree = null;
  414. $option = null;
  415. $select = null;
  416. $inputText = null;
  417. },
  418. defaultValue: function ($self, type) {
  419. var dfop = $self[0]._lrselect.dfop;
  420. dfop.currtentItem = null;
  421. dfop._index = -1;
  422. var $inputText = $self.find('.lr-select-placeholder');
  423. $inputText.css('color', '#999');
  424. $inputText.html('==' + dfop.placeholder + '==');
  425. $('#' + dfop.id + ' .lr-select-option .selected').removeClass('selected');
  426. dfop.select && dfop.select(null, type);
  427. $self.trigger("change");
  428. }
  429. };
  430. $.fn.lrselect = function (op) {
  431. var dfop = {
  432. // 请选择
  433. placeholder: "请选择",
  434. // 类型
  435. type: 'default',// default,tree,treemultiple,gird,multiple
  436. // 字段
  437. value: "id",
  438. text: "text",
  439. title: "title",
  440. // 宽度
  441. width: false,
  442. // 是否允许搜索
  443. allowSearch: false,
  444. // 访问数据接口地址
  445. url: false,
  446. data: false,
  447. // 访问数据接口参数
  448. param: null,
  449. // 接口请求的方法
  450. method: "GET",
  451. //选择事件
  452. select: false,
  453. isload: false, // 数据是否加载完成
  454. isrender: false// 选项是否渲染完成
  455. };
  456. $.extend(dfop, op || {});
  457. var $self = $(this);
  458. if ($self.length == 0) {
  459. return $self;
  460. }
  461. dfop.id = $self.attr('id');
  462. if (!dfop.id) {
  463. return false;
  464. }
  465. if ($self[0]._lrselect) {
  466. return $self;
  467. }
  468. $self[0]._lrselect = { dfop: dfop };
  469. // 基础信息渲染
  470. $.lrselect.bindEvent($self);
  471. // 数据获取方式有三种:url,data,html
  472. // url优先级最高
  473. if (dfop.url) {
  474. learun.httpAsync(dfop.method, dfop.url, dfop.param, function (data) {
  475. $self[0]._lrselect.dfop.data = data || [];
  476. $self[0]._lrselect.dfop.backdata = data || [];
  477. dfop.isload = true;
  478. });
  479. }
  480. else if (dfop.data) {
  481. dfop.isload = true;
  482. dfop.backdata = dfop.data;
  483. }
  484. else {// 最后是html方式获取(只适合数据比较少的情况)
  485. $.lrselect.htmlToData($self);
  486. dfop.isload = true;
  487. dfop.backdata = dfop.data;
  488. }
  489. $.lrselect.initRender(dfop, $self);
  490. return $self;
  491. };
  492. $.fn.lrselectRefresh = function (op) {
  493. var $self = $(this);
  494. if ($self.length == 0) {
  495. return $self;
  496. }
  497. if (!$self[0]._lrselect) {
  498. return false;
  499. }
  500. var dfop = $self[0]._lrselect.dfop;
  501. if (!dfop) {
  502. return false;
  503. }
  504. $.extend(dfop, op || {});
  505. dfop.isload = false;
  506. dfop.isrender = false;
  507. if (dfop.url) {
  508. learun.httpAsync(dfop.method, dfop.url, dfop.param, function (data) {
  509. $self[0]._lrselect.dfop.data = data || [];
  510. $self[0]._lrselect.dfop.backdata = data || [];
  511. dfop.isload = true;
  512. });
  513. }
  514. else if (dfop.data) {
  515. dfop.isload = true;
  516. dfop.backdata = dfop.data;
  517. }
  518. if (dfop._setValue != null && dfop._setValue != undefined) {
  519. $self.lrselectSet(dfop._setValue);
  520. }
  521. else {
  522. $.lrselect.defaultValue($self, 'refresh');
  523. }
  524. return $self;
  525. };
  526. $.fn.lrselectGet = function () {
  527. var $this = $(this);
  528. if ($this.length == 0) {
  529. return $this;
  530. }
  531. var dfop = $this[0]._lrselect.dfop;
  532. var value = '';
  533. switch (dfop.type) {
  534. case 'default':
  535. if (dfop.data[dfop._index]) {
  536. value = dfop.data[dfop._index][dfop.value];
  537. }
  538. break;
  539. case 'tree':
  540. if (dfop.currtentItem) {
  541. value = dfop.currtentItem[dfop.value];
  542. }
  543. break;
  544. case 'treemultiple':
  545. if (dfop.currtentItems) {
  546. for (var i = 0, l = dfop.currtentItems.length; i < l; i++) {
  547. if (value != "") {
  548. value += ",";
  549. }
  550. value += dfop.currtentItems[i][dfop.value];
  551. }
  552. }
  553. break;
  554. case 'gird':
  555. break;
  556. case 'multiple':
  557. dfop.multipleValue = dfop.multipleValue || [];
  558. return String(dfop.multipleValue);
  559. default:
  560. break;
  561. }
  562. return value;
  563. };
  564. $.fn.lrselectGetText = function () {
  565. var $this = $(this);
  566. if ($this.length == 0) {
  567. return $this;
  568. }
  569. var dfop = $this[0]._lrselect.dfop;
  570. var value = '';
  571. switch (dfop.type) {
  572. case 'default':
  573. if (dfop.data[dfop._index]) {
  574. value = dfop.data[dfop._index][dfop.text];
  575. }
  576. break;
  577. case 'tree':
  578. if (dfop.currtentItem) {
  579. value = dfop.currtentItem[dfop.text];
  580. }
  581. break;
  582. case 'treemultiple':
  583. if (dfop.currtentItems) {
  584. for (var i = 0, l = dfop.currtentItems.length; i < l; i++) {
  585. if (value != "") {
  586. value += ",";
  587. }
  588. value += dfop.currtentItems[i][dfop.text];
  589. }
  590. }
  591. break;
  592. case 'gird':
  593. break;
  594. case 'multiple':
  595. dfop.multipleValue = dfop.multipleValue || [];
  596. return String(dfop.multipleValue);
  597. default:
  598. break;
  599. }
  600. return value;
  601. };
  602. $.fn.lrselectSet = function (value) {
  603. // 设置数据的值
  604. var $this = $(this);
  605. if ($this.length == 0) {
  606. return $this;
  607. }
  608. if (!$this[0]._lrselect) {
  609. return $this;
  610. }
  611. value = value + '';
  612. if (value == '' || value == 'undefined' || value == 'null') {
  613. $.lrselect.defaultValue($this);
  614. return $this;
  615. }
  616. var dfop = $this[0]._lrselect.dfop;
  617. dfop._setValue = null;
  618. if (!dfop) {
  619. return $this;
  620. }
  621. $('#' + dfop.id + ' .lr-select-option .selected').removeClass('selected');
  622. function _fn(dfop) {
  623. if (dfop.isload == false) {
  624. setTimeout(function () {
  625. _fn(dfop);
  626. }, 100);
  627. }
  628. else if (dfop.isload == true) {
  629. var _currtentItem;
  630. switch (dfop.type) {
  631. case 'default':
  632. for (var i = 0, l = dfop.data.length; i < l; i++) {
  633. if (dfop.data[i][dfop.value] == value) {
  634. dfop._index = i;
  635. _currtentItem = dfop.data[i];
  636. break;
  637. }
  638. }
  639. break;
  640. case 'tree':
  641. _currtentItem = $.lrtree.findItem(dfop.data, dfop.value, value);
  642. dfop.currtentItem = _currtentItem;
  643. break;
  644. case 'treemultiple':
  645. $.lrselect.render(dfop);
  646. $('#learun_select_option_' + dfop.id).find('.lr-select-option-content').lrtreeSet('setCheck', value.split(','));
  647. //$this.find('.lr-select-option-content').lrtreeSet('setCheck', value.split(','));
  648. return false;
  649. case 'gird':
  650. break;
  651. case 'multiple':
  652. dfop.multipleMapValue = {};
  653. dfop.multipleValue = [];
  654. dfop.multipleText = [];
  655. if (dfop.isrender) {
  656. $this.find('.lr-select-node-cb[src$="checkbox_1.png"]').attr('src', '/Content/images/learuntree/checkbox_0.png');
  657. }
  658. var _valuellist = value.split(',');
  659. for (var i = 0, l = dfop.data.length; i < l; i++) {
  660. var _arrayIndex = $.inArray(dfop.data[i][dfop.value] + '', _valuellist);
  661. if (_arrayIndex != -1) {
  662. dfop.multipleMapValue[i] = dfop.data[i];
  663. dfop.multipleValue.push(dfop.data[i][dfop.value]);
  664. dfop.multipleText.push(dfop.data[i][dfop.text]);
  665. if (dfop.isrender) {
  666. $this.find('[data-value="' + i + '"] .lr-select-node-cb').attr('src', '/Content/images/learuntree/checkbox_1.png');
  667. }
  668. if (dfop.select) {
  669. dfop.select(dfop.data[i], true, $this);
  670. }
  671. }
  672. }
  673. if (dfop.multipleText.length > 0) {
  674. _currtentItem = dfop.multipleText;
  675. }
  676. break;
  677. default:
  678. break;
  679. }
  680. if (_currtentItem) {
  681. if (dfop.type == 'multiple') {
  682. var $inputText = $this.find('.lr-select-placeholder');
  683. if (dfop.multipleText.length > 0) {
  684. $inputText.css('color', '#000');
  685. }
  686. else {
  687. $inputText.css('color', '#999');
  688. }
  689. $inputText.html(String(dfop.multipleText));
  690. $this.trigger("change");
  691. } else {
  692. var $inputText = $this.find('.lr-select-placeholder');
  693. $inputText.html(_currtentItem[dfop.text]);
  694. $inputText.css('color', '#000');
  695. $this.trigger("change");
  696. if (dfop.select) {
  697. dfop.select(_currtentItem);
  698. }
  699. }
  700. }
  701. else {
  702. dfop._setValue = value;
  703. }
  704. }
  705. }
  706. _fn(dfop);
  707. return $this;
  708. };
  709. $.fn.lrselectGetEx = function () {
  710. var $this = $(this);
  711. if ($this.length == 0) {
  712. return $this;
  713. }
  714. var dfop = $this[0]._lrselect.dfop;
  715. var item = null;
  716. switch (dfop.type) {
  717. case 'default':
  718. if (dfop.data[dfop._index]) {
  719. item = dfop.data[dfop._index];
  720. }
  721. break;
  722. case 'tree':
  723. if (dfop.currtentItem) {
  724. item = dfop.currtentItem;
  725. }
  726. break;
  727. case 'treemultiple':
  728. if (dfop.currtentItems) {
  729. item = dfop.currtentItems;
  730. }
  731. break;
  732. case 'gird':
  733. break;
  734. case 'multiple':
  735. item = dfop.multipleValue || [];
  736. break;
  737. default:
  738. break;
  739. }
  740. return item;
  741. };
  742. })(jQuery, top.learun);