jquery.searchbox.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /**
  2. * jQuery EasyUI 1.3.4
  3. *
  4. * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL or commercial licenses
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. * http://www.gnu.org/licenses/gpl.txt
  9. * http://www.jeasyui.com/license_commercial.php
  10. *
  11. */
  12. (function($){
  13. function _1(_2){
  14. $(_2).hide();
  15. var _3=$("<span class=\"searchbox\"></span>").insertAfter(_2);
  16. var _4=$("<input type=\"text\" class=\"searchbox-text\">").appendTo(_3);
  17. $("<span><span class=\"searchbox-button\"></span></span>").appendTo(_3);
  18. var _5=$(_2).attr("name");
  19. if(_5){
  20. _4.attr("name",_5);
  21. $(_2).removeAttr("name").attr("searchboxName",_5);
  22. }
  23. return _3;
  24. };
  25. function _6(_7,_8){
  26. var _9=$.data(_7,"searchbox").options;
  27. var sb=$.data(_7,"searchbox").searchbox;
  28. if(_8){
  29. _9.width=_8;
  30. }
  31. sb.appendTo("body");
  32. if(isNaN(_9.width)){
  33. _9.width=sb._outerWidth();
  34. }
  35. var _a=sb.find("span.searchbox-button");
  36. var _b=sb.find("a.searchbox-menu");
  37. var _c=sb.find("input.searchbox-text");
  38. sb._outerWidth(_9.width)._outerHeight(_9.height);
  39. _c._outerWidth(sb.width()-_b._outerWidth()-_a._outerWidth());
  40. _c.css({height:sb.height()+"px",lineHeight:sb.height()+"px"});
  41. _b._outerHeight(sb.height());
  42. _a._outerHeight(sb.height());
  43. var _d=_b.find("span.l-btn-left");
  44. _d._outerHeight(sb.height());
  45. _d.find("span.l-btn-text,span.m-btn-downarrow").css({height:_d.height()+"px",lineHeight:_d.height()+"px"});
  46. sb.insertAfter(_7);
  47. };
  48. function _e(_f){
  49. var _10=$.data(_f,"searchbox");
  50. var _11=_10.options;
  51. if(_11.menu){
  52. _10.menu=$(_11.menu).menu({onClick:function(_12){
  53. _13(_12);
  54. }});
  55. var _14=_10.menu.children("div.menu-item:first");
  56. _10.menu.children("div.menu-item").each(function(){
  57. var _15=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)});
  58. if(_15.selected){
  59. _14=$(this);
  60. return false;
  61. }
  62. });
  63. _14.triggerHandler("click");
  64. }else{
  65. _10.searchbox.find("a.searchbox-menu").remove();
  66. _10.menu=null;
  67. }
  68. function _13(_16){
  69. _10.searchbox.find("a.searchbox-menu").remove();
  70. var mb=$("<a class=\"searchbox-menu\" href=\"javascript:void(0)\"></a>").html(_16.text);
  71. mb.prependTo(_10.searchbox).menubutton({menu:_10.menu,iconCls:_16.iconCls});
  72. _10.searchbox.find("input.searchbox-text").attr("name",$(_16.target).attr("name")||_16.text);
  73. _6(_f);
  74. };
  75. };
  76. function _17(_18){
  77. var _19=$.data(_18,"searchbox");
  78. var _1a=_19.options;
  79. var _1b=_19.searchbox.find("input.searchbox-text");
  80. var _1c=_19.searchbox.find(".searchbox-button");
  81. _1b.unbind(".searchbox").bind("blur.searchbox",function(e){
  82. _1a.value=$(this).val();
  83. if(_1a.value==""){
  84. $(this).val(_1a.prompt);
  85. $(this).addClass("searchbox-prompt");
  86. }else{
  87. $(this).removeClass("searchbox-prompt");
  88. }
  89. }).bind("focus.searchbox",function(e){
  90. if($(this).val()!=_1a.value){
  91. $(this).val(_1a.value);
  92. }
  93. $(this).removeClass("searchbox-prompt");
  94. }).bind("keydown.searchbox",function(e){
  95. if(e.keyCode==13){
  96. e.preventDefault();
  97. var _1d=$.fn.prop?_1b.prop("name"):_1b.attr("name");
  98. _1a.value=$(this).val();
  99. _1a.searcher.call(_18,_1a.value,_1d);
  100. return false;
  101. }
  102. });
  103. _1c.unbind(".searchbox").bind("click.searchbox",function(){
  104. var _1e=$.fn.prop?_1b.prop("name"):_1b.attr("name");
  105. _1a.searcher.call(_18,_1a.value,_1e);
  106. }).bind("mouseenter.searchbox",function(){
  107. $(this).addClass("searchbox-button-hover");
  108. }).bind("mouseleave.searchbox",function(){
  109. $(this).removeClass("searchbox-button-hover");
  110. });
  111. };
  112. function _1f(_20){
  113. var _21=$.data(_20,"searchbox");
  114. var _22=_21.options;
  115. var _23=_21.searchbox.find("input.searchbox-text");
  116. if(_22.value==""){
  117. _23.val(_22.prompt);
  118. _23.addClass("searchbox-prompt");
  119. }else{
  120. _23.val(_22.value);
  121. _23.removeClass("searchbox-prompt");
  122. }
  123. };
  124. $.fn.searchbox=function(_24,_25){
  125. if(typeof _24=="string"){
  126. return $.fn.searchbox.methods[_24](this,_25);
  127. }
  128. _24=_24||{};
  129. return this.each(function(){
  130. var _26=$.data(this,"searchbox");
  131. if(_26){
  132. $.extend(_26.options,_24);
  133. }else{
  134. _26=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_24),searchbox:_1(this)});
  135. }
  136. _e(this);
  137. _1f(this);
  138. _17(this);
  139. _6(this);
  140. });
  141. };
  142. $.fn.searchbox.methods={options:function(jq){
  143. return $.data(jq[0],"searchbox").options;
  144. },menu:function(jq){
  145. return $.data(jq[0],"searchbox").menu;
  146. },textbox:function(jq){
  147. return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text");
  148. },getValue:function(jq){
  149. return $.data(jq[0],"searchbox").options.value;
  150. },setValue:function(jq,_27){
  151. return jq.each(function(){
  152. $(this).searchbox("options").value=_27;
  153. $(this).searchbox("textbox").val(_27);
  154. $(this).searchbox("textbox").blur();
  155. });
  156. },getName:function(jq){
  157. return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name");
  158. },selectName:function(jq,_28){
  159. return jq.each(function(){
  160. var _29=$.data(this,"searchbox").menu;
  161. if(_29){
  162. _29.children("div.menu-item[name=\""+_28+"\"]").triggerHandler("click");
  163. }
  164. });
  165. },destroy:function(jq){
  166. return jq.each(function(){
  167. var _2a=$(this).searchbox("menu");
  168. if(_2a){
  169. _2a.menu("destroy");
  170. }
  171. $.data(this,"searchbox").searchbox.remove();
  172. $(this).remove();
  173. });
  174. },resize:function(jq,_2b){
  175. return jq.each(function(){
  176. _6(this,_2b);
  177. });
  178. }};
  179. $.fn.searchbox.parseOptions=function(_2c){
  180. var t=$(_2c);
  181. return $.extend({},$.parser.parseOptions(_2c,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)});
  182. };
  183. $.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_2d,_2e){
  184. }};
  185. })(jQuery);