jquery.form.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. /**
  2. * jQuery EasyUI 1.4.1
  3. *
  4. * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
  7. * To use it on other terms please contact us at info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2,_3){
  12. var _4=$.data(_2,"form").options;
  13. $.extend(_4,_3||{});
  14. var _5=$.extend({},_4.queryParams);
  15. if(_4.onSubmit.call(_2,_5)==false){
  16. return;
  17. }
  18. $(_2).find(".textbox-text:focus").blur();
  19. var _6="easyui_frame_"+(new Date().getTime());
  20. var _7=$("<iframe id="+_6+" name="+_6+"></iframe>").appendTo("body");
  21. _7.attr("src",window.ActiveXObject?"javascript:false":"about:blank");
  22. _7.css({position:"absolute",top:-1000,left:-1000});
  23. _7.bind("load",cb);
  24. _8(_5);
  25. function _8(_9){
  26. var _a=$(_2);
  27. if(_4.url){
  28. _a.attr("action",_4.url);
  29. }
  30. var t=_a.attr("target"),a=_a.attr("action");
  31. _a.attr("target",_6);
  32. var _b=$();
  33. try{
  34. for(var n in _9){
  35. var _c=$("<input type=\"hidden\" name=\""+n+"\">").val(_9[n]).appendTo(_a);
  36. _b=_b.add(_c);
  37. }
  38. _d();
  39. _a[0].submit();
  40. }
  41. finally{
  42. _a.attr("action",a);
  43. t?_a.attr("target",t):_a.removeAttr("target");
  44. _b.remove();
  45. }
  46. };
  47. function _d(){
  48. var f=$("#"+_6);
  49. if(!f.length){
  50. return;
  51. }
  52. try{
  53. var s=f.contents()[0].readyState;
  54. if(s&&s.toLowerCase()=="uninitialized"){
  55. setTimeout(_d,100);
  56. }
  57. }
  58. catch(e){
  59. cb();
  60. }
  61. };
  62. var _e=10;
  63. function cb(){
  64. var f=$("#"+_6);
  65. if(!f.length){
  66. return;
  67. }
  68. f.unbind();
  69. var _f="";
  70. try{
  71. var _10=f.contents().find("body");
  72. _f=_10.html();
  73. if(_f==""){
  74. if(--_e){
  75. setTimeout(cb,100);
  76. return;
  77. }
  78. }
  79. var ta=_10.find(">textarea");
  80. if(ta.length){
  81. _f=ta.val();
  82. }else{
  83. var pre=_10.find(">pre");
  84. if(pre.length){
  85. _f=pre.html();
  86. }
  87. }
  88. }
  89. catch(e){
  90. }
  91. _4.success(_f);
  92. setTimeout(function(){
  93. f.unbind();
  94. f.remove();
  95. },100);
  96. };
  97. };
  98. function _11(_12,_13){
  99. var _14=$.data(_12,"form").options;
  100. if(typeof _13=="string"){
  101. var _15={};
  102. if(_14.onBeforeLoad.call(_12,_15)==false){
  103. return;
  104. }
  105. $.ajax({url:_13,data:_15,dataType:"json",success:function(_16){
  106. _17(_16);
  107. },error:function(){
  108. _14.onLoadError.apply(_12,arguments);
  109. }});
  110. }else{
  111. _17(_13);
  112. }
  113. function _17(_18){
  114. var _19=$(_12);
  115. for(var _1a in _18){
  116. var val=_18[_1a];
  117. var rr=_1b(_1a,val);
  118. if(!rr.length){
  119. var _1c=_1d(_1a,val);
  120. if(!_1c){
  121. $("input[name=\""+_1a+"\"]",_19).val(val);
  122. $("textarea[name=\""+_1a+"\"]",_19).val(val);
  123. $("select[name=\""+_1a+"\"]",_19).val(val);
  124. }
  125. }
  126. _1e(_1a,val);
  127. }
  128. _14.onLoadSuccess.call(_12,_18);
  129. _2b(_12);
  130. };
  131. function _1b(_1f,val){
  132. var rr=$(_12).find("input[name=\""+_1f+"\"][type=radio], input[name=\""+_1f+"\"][type=checkbox]");
  133. rr._propAttr("checked",false);
  134. rr.each(function(){
  135. var f=$(this);
  136. if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){
  137. f._propAttr("checked",true);
  138. }
  139. });
  140. return rr;
  141. };
  142. function _1d(_20,val){
  143. var _21=0;
  144. var pp=["textbox","numberbox","slider"];
  145. for(var i=0;i<pp.length;i++){
  146. var p=pp[i];
  147. var f=$(_12).find("input["+p+"Name=\""+_20+"\"]");
  148. if(f.length){
  149. f[p]("setValue",val);
  150. _21+=f.length;
  151. }
  152. }
  153. return _21;
  154. };
  155. function _1e(_22,val){
  156. var _23=$(_12);
  157. var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"];
  158. var c=_23.find("[comboName=\""+_22+"\"]");
  159. if(c.length){
  160. for(var i=0;i<cc.length;i++){
  161. var _24=cc[i];
  162. if(c.hasClass(_24+"-f")){
  163. if(c[_24]("options").multiple){
  164. c[_24]("setValues",val);
  165. }else{
  166. c[_24]("setValue",val);
  167. }
  168. return;
  169. }
  170. }
  171. }
  172. };
  173. };
  174. function _25(_26){
  175. $("input,select,textarea",_26).each(function(){
  176. var t=this.type,tag=this.tagName.toLowerCase();
  177. if(t=="text"||t=="hidden"||t=="password"||tag=="textarea"){
  178. this.value="";
  179. }else{
  180. if(t=="file"){
  181. var _27=$(this);
  182. if(!_27.hasClass("textbox-value")){
  183. var _28=_27.clone().val("");
  184. _28.insertAfter(_27);
  185. if(_27.data("validatebox")){
  186. _27.validatebox("destroy");
  187. _28.validatebox();
  188. }else{
  189. _27.remove();
  190. }
  191. }
  192. }else{
  193. if(t=="checkbox"||t=="radio"){
  194. this.checked=false;
  195. }else{
  196. if(tag=="select"){
  197. this.selectedIndex=-1;
  198. }
  199. }
  200. }
  201. }
  202. });
  203. var t=$(_26);
  204. var _29=["textbox","combo","combobox","combotree","combogrid","slider"];
  205. for(var i=0;i<_29.length;i++){
  206. var _2a=_29[i];
  207. var r=t.find("."+_2a+"-f");
  208. if(r.length&&r[_2a]){
  209. r[_2a]("clear");
  210. }
  211. }
  212. _2b(_26);
  213. };
  214. function _2c(_2d){
  215. _2d.reset();
  216. var t=$(_2d);
  217. var _2e=["textbox","combo","combobox","combotree","combogrid","datebox","datetimebox","spinner","timespinner","numberbox","numberspinner","slider"];
  218. for(var i=0;i<_2e.length;i++){
  219. var _2f=_2e[i];
  220. var r=t.find("."+_2f+"-f");
  221. if(r.length&&r[_2f]){
  222. r[_2f]("reset");
  223. }
  224. }
  225. _2b(_2d);
  226. };
  227. function _30(_31){
  228. var _32=$.data(_31,"form").options;
  229. $(_31).unbind(".form");
  230. if(_32.ajax){
  231. $(_31).bind("submit.form",function(){
  232. setTimeout(function(){
  233. _1(_31,_32);
  234. },0);
  235. return false;
  236. });
  237. }
  238. _33(_31,_32.novalidate);
  239. };
  240. function _34(_35,_36){
  241. _36=_36||{};
  242. var _37=$.data(_35,"form");
  243. if(_37){
  244. $.extend(_37.options,_36);
  245. }else{
  246. $.data(_35,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_35),_36)});
  247. }
  248. };
  249. function _2b(_38){
  250. if($.fn.validatebox){
  251. var t=$(_38);
  252. t.find(".validatebox-text:not(:disabled)").validatebox("validate");
  253. var _39=t.find(".validatebox-invalid");
  254. _39.filter(":not(:disabled):first").focus();
  255. return _39.length==0;
  256. }
  257. return true;
  258. };
  259. function _33(_3a,_3b){
  260. var _3c=$.data(_3a,"form").options;
  261. _3c.novalidate=_3b;
  262. $(_3a).find(".validatebox-text:not(:disabled)").validatebox(_3b?"disableValidation":"enableValidation");
  263. };
  264. $.fn.form=function(_3d,_3e){
  265. if(typeof _3d=="string"){
  266. this.each(function(){
  267. _34(this);
  268. });
  269. return $.fn.form.methods[_3d](this,_3e);
  270. }
  271. return this.each(function(){
  272. _34(this,_3d);
  273. _30(this);
  274. });
  275. };
  276. $.fn.form.methods={options:function(jq){
  277. return $.data(jq[0],"form").options;
  278. },submit:function(jq,_3f){
  279. return jq.each(function(){
  280. _1(this,_3f);
  281. });
  282. },load:function(jq,_40){
  283. return jq.each(function(){
  284. _11(this,_40);
  285. });
  286. },clear:function(jq){
  287. return jq.each(function(){
  288. _25(this);
  289. });
  290. },reset:function(jq){
  291. return jq.each(function(){
  292. _2c(this);
  293. });
  294. },validate:function(jq){
  295. return _2b(jq[0]);
  296. },disableValidation:function(jq){
  297. return jq.each(function(){
  298. _33(this,true);
  299. });
  300. },enableValidation:function(jq){
  301. return jq.each(function(){
  302. _33(this,false);
  303. });
  304. }};
  305. $.fn.form.parseOptions=function(_41){
  306. var t=$(_41);
  307. return $.extend({},$.parser.parseOptions(_41,[{ajax:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)});
  308. };
  309. $.fn.form.defaults={novalidate:false,ajax:true,url:null,queryParams:{},onSubmit:function(_42){
  310. return $(this).form("validate");
  311. },success:function(_43){
  312. },onBeforeLoad:function(_44){
  313. },onLoadSuccess:function(_45){
  314. },onLoadError:function(){
  315. }};
  316. })(jQuery);