select.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. var legp = function(ele) {
  2. return ({
  3. that: Array.prototype.slice.call(document.querySelectorAll(ele), 0),
  4. stopPropagation: function(e) {
  5. e = e || window.event;
  6. if (e.stopPropagation) { //W3C阻止冒泡方法
  7. e.stopPropagation();
  8. } else {
  9. e.cancelBubble = true; //IE阻止冒泡方法
  10. }
  11. },
  12. hide: function() {
  13. legp(ele).that.forEach(function(item) {
  14. item.style.cssText += "display:none;";
  15. });
  16. },
  17. show: function() {
  18. legp(ele).that.forEach(function(item) {
  19. item.style.cssText += "display:block;";
  20. });
  21. },
  22. legp_searchList: function(name) {
  23. let arr = [];
  24. legp("input[name=" + name + "]").that.forEach(item => {
  25. arr.push(item.value)
  26. });
  27. return arr;
  28. },
  29. legp_search: function(name, tagData) {
  30. var domId = legp(ele).that[0];
  31. var html = "\n<div>\n<div class=\"selectId\">\n<input type=\"text\" placeholder=\"\u8F93\u5165\u6216\u9009\u62E9\" autocomplete=\"off\">\n<dl style=\"display: none;\">\n</dl>\n</div>\n</div>\n<div>\n<label style=\"line-height:30px\">已选择:</label>\n<div class=\"AD\">\n</div>\n</div>";
  32. domId.innerHTML = html;
  33. // domId.appendChild(dom);
  34. legp(".AD").that[0].parentNode.style.cssText += "display:none;";
  35. //获取当前广告
  36. function myClick() {
  37. legp(".selectId dl dd").that.forEach(function(item) {
  38. item.onclick = function(e) {
  39. var id = this.attributes.value.value;
  40. if (id != '') {
  41. legp(".AD").that[0].innerHTML += "<a href=\"javascript:;\" class=\"label\"><span>" + this.innerHTML + "</span><input type=\"hidden\" name=\"" + name + "\" id=\"" + id + "\" value=\"" + id + "\"/><span class=\"close\">x</span></a>";
  42. legp(".AD").that[0].parentNode.style.cssText += "display:block;";
  43. for (var i = 0; i < tagData.length; i++) {
  44. if (tagData[i].id == id) {
  45. tagData.splice(i, 1);
  46. i = tagData.length;
  47. }
  48. }
  49. removeAdvertising();
  50. }
  51. legp(".selectId dl").hide();
  52. legp(".selectId input").that[0].value = '';
  53. e.stopPropagation();
  54. };
  55. });
  56. }
  57. var ddRemove = function(dd) {
  58. var temp = dd.nextElementSibling;
  59. dd.remove();
  60. if (temp != null && temp.nodeName == 'DD') {
  61. ddRemove(temp);
  62. }
  63. };
  64. //筛选
  65. legp(".selectId input").that[0].oninput = function() {
  66. var val = this.value; //获取input值
  67. var dd = legp(".selectId dl dd").that[0];
  68. if (dd == "DD") {
  69. ddRemove(dd);
  70. }
  71. legp(".selectId dl").hide();
  72. if (tagData.length > 0) {
  73. legp(".selectId dl").show();
  74. var sear_1 = new RegExp(val);
  75. var judge_1 = false;
  76. legp(".selectId dl").that[0].innerHTML = "";
  77. tagData.forEach(function(item) {
  78. if (sear_1.test(item.name)) {
  79. judge_1 = true;
  80. legp(".selectId dl").that[0].innerHTML += "<dd value=\"" + item.id + "\">" + item.name + "</dd>";
  81. }
  82. });
  83. if (!judge_1) {
  84. legp(".selectId dl").that[0].innerHTML = "<dd>\u6682\u65E0\u6570\u636E</dd>";
  85. }
  86. myClick();
  87. }
  88. };
  89. //显示没被选择的
  90. legp(".selectId input").that[0].onclick = function(e) {
  91. var dd = legp(".selectId dl dd").that[0];
  92. if (dd == "DD") {
  93. ddRemove(dd);
  94. }
  95. if (tagData.length == 0) {
  96. this.innerHTML = "暂无数据";
  97. } else {
  98. legp(".selectId dl").show();
  99. }
  100. legp(".selectId dl").that[0].innerHTML = "";
  101. tagData.sort(function(a, b) {
  102. return a.id - b.id;
  103. });
  104. tagData.forEach(function(item) {
  105. legp(".selectId dl").that[0].innerHTML += "<dd value=\"" + item.id + "\">" + item.name + "</dd>";
  106. });
  107. myClick();
  108. e.stopPropagation();
  109. };
  110. var AD = /** @class */ (function() {
  111. function AD(name, id) {
  112. this.name = name;
  113. this.id = id;
  114. }
  115. return AD;
  116. }());
  117. //删除当前广告
  118. function removeAdvertising() {
  119. legp(".close").that.forEach(function(item) {
  120. item.onclick = function() {
  121. ddRemove(this.parentNode);
  122. var id = this.parentNode.children[1].id;
  123. var text = this.parentNode.children[0].innerHTML;
  124. tagData.push(new AD(text, id));
  125. if (legp(".close").that.length == 0) {
  126. legp(".AD").that[0].parentNode.style.cssText += "display:none;";
  127. }
  128. };
  129. });
  130. }
  131. // //封装
  132. // function clickoutSide(nameClass, callback) {
  133. // // 全局注册点击事件
  134. // document.onclick = function (e) {
  135. // //若点击元素为目标元素则返回
  136. // if (e.target.className === nameClass) return
  137. // //否则执行回调函数
  138. // callback()
  139. // }
  140. // }
  141. //隐藏
  142. document.onclick = function(e) {
  143. legp(".selectId dl").hide();
  144. legp(".selectId input").that[0].value = "";
  145. };
  146. }
  147. });
  148. };
  149. (function() {
  150. var tagData = [{
  151. "name": "站点1",
  152. "id": 64
  153. }, {
  154. "name": "站点2",
  155. "id": 65
  156. }, {
  157. "name": "站点3",
  158. "id": 5
  159. }, {
  160. "name": "站点4",
  161. "id": 6
  162. }, {
  163. "name": "站点5",
  164. "id": 7
  165. }, {
  166. "name": "站点6",
  167. "id": 8
  168. }, {
  169. "name": "站点7",
  170. "id": 10
  171. }, {
  172. "name": "站点8",
  173. "id": 111
  174. }, {
  175. "name": "站点9",
  176. "id": 112
  177. }, {
  178. "name": "站点10",
  179. "id": 113
  180. }];
  181. legp(".qwe").legp_search("fileId", tagData)
  182. })()