selectBox.js
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:10k
源码类别:

电子政务应用

开发平台:

Java

  1. // -------------------------------------------------------------------
  2. // selectUnselectMatchingOptions(select_object,regex,select/unselect,true/false)
  3. //  This is a general function used by the select functions below, to
  4. //  avoid code duplication
  5. // -------------------------------------------------------------------
  6. function selectUnselectMatchingOptions(obj,regex,which,only) {
  7. var selected1 = null;
  8. var selected2 = null;
  9. var re = null;
  10. var i = 0;
  11. if (window.RegExp) {
  12. if (which == "select") {
  13. selected1=true;
  14. selected2=false;
  15. }
  16. else if (which == "unselect") {
  17. selected1=false;
  18. selected2=true;
  19. }
  20. else {
  21. return;
  22. }
  23. re = new RegExp(regex);
  24. for (i=0; i<obj.options.length; i++) {
  25. if (re.test(obj.options[i].text)) {
  26. obj.options[i].selected = selected1;
  27. }
  28. else {
  29. if (only == true) {
  30. obj.options[i].selected = selected2;
  31. }
  32. }
  33. }
  34. }
  35. }
  36. // -------------------------------------------------------------------
  37. // selectMatchingOptions(select_object,regex)
  38. //  This function selects all options that match the regular expression
  39. //  passed in. Currently-selected options will not be changed.
  40. // -------------------------------------------------------------------
  41. function selectMatchingOptions(obj,regex) {
  42. selectUnselectMatchingOptions(obj,regex,"select",false);
  43. }
  44. // -------------------------------------------------------------------
  45. // selectOnlyMatchingOptions(select_object,regex)
  46. //  This function selects all options that match the regular expression
  47. //  passed in. Selected options that don't match will be un-selected.
  48. // -------------------------------------------------------------------
  49. function selectOnlyMatchingOptions(obj,regex) {
  50. selectUnselectMatchingOptions(obj,regex,"select",true);
  51. }
  52. // -------------------------------------------------------------------
  53. // unSelectMatchingOptions(select_object,regex)
  54. //  This function Unselects all options that match the regular expression
  55. //  passed in. 
  56. // -------------------------------------------------------------------
  57. function unSelectMatchingOptions(obj,regex) {
  58. selectUnselectMatchingOptions(obj,regex,"unselect",false);
  59. }
  60. // -------------------------------------------------------------------
  61. // sortSelect(select_object)
  62. //   Pass this function a SELECT object and the options will be sorted
  63. //   by their text (display) values
  64. // -------------------------------------------------------------------
  65. function sortSelect(obj) {
  66. var o = new Array();
  67. var i = 0;
  68. for (i=0; i<obj.options.length; i++) {
  69. o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
  70. }
  71. o = o.sort( 
  72. function(a,b) { 
  73. if ((a.text+"") < (b.text+"")) { return -1; }
  74. if ((a.text+"") > (b.text+"")) { return 1; }
  75. return 0;
  76. );
  77. for (i=0; i<o.length; i++) {
  78. obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
  79. }
  80. }
  81. // -------------------------------------------------------------------
  82. // selectAllOptions(select_object)
  83. //  This function takes a select box and selects all options (in a 
  84. //  multiple select object). This is used when passing values between
  85. //  two select boxes. Select all options in the right box before 
  86. //  submitting the form so the values will be sent to the server.
  87. // -------------------------------------------------------------------
  88. function selectAllOptions(obj) {
  89. for (var i=0; i<obj.options.length; i++) {
  90. obj.options[i].selected = true;
  91. }
  92. }
  93. // -------------------------------------------------------------------
  94. // selectAllOptions(select_object, hidden_object)
  95. //  Used to send data to script as one variable with a delimiter
  96. //  Added by Christopher Padfield on 22/10/2002
  97. // -------------------------------------------------------------------
  98. function submitAllOptions(obj, obj2) {
  99. var postVals = "";
  100. for (var i=0; i<obj.options.length; i++) {
  101. postVals = postVals == "" ? obj.options[i].value : postVals + "," + obj.options[i].value;
  102. }
  103. obj2.value = postVals;
  104. }
  105. // -------------------------------------------------------------------
  106. // moveSelectedOptions(select_object,select_object[,autosort(true/false)[,regex]])
  107. //  This function moves options between select boxes. Works best with
  108. //  multi-select boxes to create the common Windows control effect.
  109. //  Passes all selected values from the first object to the second
  110. //  object and re-sorts each box.
  111. //  If a third argument of 'false' is passed, then the lists are not
  112. //  sorted after the move.
  113. //  If a fourth string argument is passed, this will function as a
  114. //  Regular Expression to match against the TEXT or the options. If 
  115. //  the text of an option matches the pattern, it will NOT be moved.
  116. //  It will be treated as an unmoveable option.
  117. //  You can also put this into the <SELECT> object as follows:
  118. //    onDblClick="moveSelectedOptions(this,this.form.target)
  119. //  This way, when the user double-clicks on a value in one box, it
  120. //  will be transferred to the other (in browsers that support the 
  121. //  onDblClick() event handler).
  122. // -------------------------------------------------------------------
  123. function moveSelectedOptions(from,to) {
  124. var i = 0;
  125. var o = null;
  126. // Unselect matching options, if required
  127. if (arguments.length>3) {
  128. var regex = arguments[3];
  129. if (regex != "") {
  130. unSelectMatchingOptions(from,regex);
  131. }
  132. }
  133. // Move them over
  134. for (i=0; i<from.options.length; i++) {
  135. o = from.options[i];
  136. if (o.selected) {
  137. to.options[to.options.length] = new Option( o.text, o.value, false, false);
  138. }
  139. }
  140. // Delete them from original
  141. for (i=(from.options.length-1); i>=0; i--) {
  142. o = from.options[i];
  143. if (o.selected) {
  144. from.options[i] = null;
  145. }
  146. }
  147. if ((arguments.length<3) || (arguments[2]==true)) {
  148. sortSelect(from);
  149. sortSelect(to);
  150. }
  151. from.selectedIndex = -1;
  152. to.selectedIndex = -1;
  153. }
  154. // -------------------------------------------------------------------
  155. // copySelectedOptions(select_object,select_object[,autosort(true/false)])
  156. //  This function copies options between select boxes instead of 
  157. //  moving items. Duplicates in the target list are not allowed.
  158. // -------------------------------------------------------------------
  159. function copySelectedOptions(from,to) {
  160. var options = new Object();
  161. var i = 0;
  162. for (i=0; i<to.options.length; i++) {
  163. options[to.options[i].text] = true;
  164. }
  165. for (i=0; i<from.options.length; i++) {
  166. var o = from.options[i];
  167. if (o.selected) {
  168. if (options[o.text] == null || options[o.text] == "undefined") {
  169. to.options[to.options.length] = new Option( o.text, o.value, false, false);
  170. }
  171. }
  172. }
  173. if ((arguments.length<3) || (arguments[2]==true)) {
  174. sortSelect(to);
  175. }
  176. from.selectedIndex = -1;
  177. to.selectedIndex = -1;
  178. }
  179. // -------------------------------------------------------------------
  180. // moveAllOptions(select_object,select_object[,autosort(true/false)[,regex]])
  181. //  Move all options from one select box to another.
  182. // -------------------------------------------------------------------
  183. function moveAllOptions(from,to) {
  184. selectAllOptions(from);
  185. if (arguments.length==2) {
  186. moveSelectedOptions(from,to);
  187. }
  188. else if (arguments.length==3) {
  189. moveSelectedOptions(from,to,arguments[2]);
  190. }
  191. else if (arguments.length==4) {
  192. moveSelectedOptions(from,to,arguments[2],arguments[3]);
  193. }
  194. }
  195. // -------------------------------------------------------------------
  196. // copyAllOptions(select_object,select_object[,autosort(true/false)])
  197. //  Copy all options from one select box to another, instead of
  198. //  removing items. Duplicates in the target list are not allowed.
  199. // -------------------------------------------------------------------
  200. function copyAllOptions(from,to) {
  201. selectAllOptions(from);
  202. if (arguments.length==2) {
  203. copySelectedOptions(from,to);
  204. }
  205. else if (arguments.length==3) {
  206. copySelectedOptions(from,to,arguments[2]);
  207. }
  208. }
  209. // -------------------------------------------------------------------
  210. // swapOptions(select_object,option1,option2)
  211. //  Swap positions of two options in a select list
  212. // -------------------------------------------------------------------
  213. function swapOptions(obj,i,j) {
  214. var o = obj.options;
  215. var i_selected = o[i].selected;
  216. var j_selected = o[j].selected;
  217. var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
  218. var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
  219. o[i] = temp2;
  220. o[j] = temp;
  221. o[i].selected = j_selected;
  222. o[j].selected = i_selected;
  223. }
  224. // -------------------------------------------------------------------
  225. // moveOptionUp(select_object)
  226. //  Move selected option in a select list up one
  227. // -------------------------------------------------------------------
  228. function moveOptionUp(obj) {
  229. // If > 1 option selected, do nothing
  230. var selectedCount=0;
  231. for (i=0; i<obj.options.length; i++) {
  232. if (obj.options[i].selected) {
  233. selectedCount++;
  234. }
  235. }
  236. if (selectedCount > 1) {
  237. return;
  238. }
  239. // If this is the first item in the list, do nothing
  240. var i = obj.selectedIndex;
  241. if (i == 0) {
  242. return;
  243. }
  244. swapOptions(obj,i,i-1);
  245. obj.options[i-1].selected = true;
  246. }
  247. // -------------------------------------------------------------------
  248. // moveOptionDown(select_object)
  249. //  Move selected option in a select list down one
  250. // -------------------------------------------------------------------
  251. function moveOptionDown(obj) {
  252. // If > 1 option selected, do nothing
  253. var selectedCount=0;
  254. for (i=0; i<obj.options.length; i++) {
  255. if (obj.options[i].selected) {
  256. selectedCount++;
  257. }
  258. }
  259. if (selectedCount > 1) {
  260. return;
  261. }
  262. // If this is the last item in the list, do nothing
  263. var i = obj.selectedIndex;
  264. if (i == (obj.options.length-1)) {
  265. return;
  266. }
  267. swapOptions(obj,i,i+1);
  268. obj.options[i+1].selected = true;
  269. }