jquery.form.js 5.7 KB

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