jquery.form.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: 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. if(!_1b(_1a,val)){
  118. if(!_1c(_1a,val)){
  119. _19.find("input[name=\""+_1a+"\"]").val(val);
  120. _19.find("textarea[name=\""+_1a+"\"]").val(val);
  121. _19.find("select[name=\""+_1a+"\"]").val(val);
  122. }
  123. }
  124. }
  125. _14.onLoadSuccess.call(_12,_18);
  126. _19.form("validate");
  127. };
  128. function _1b(_1d,val){
  129. var cc=$(_12).find("[switchbuttonName=\""+_1d+"\"]");
  130. if(cc.length){
  131. cc.switchbutton("uncheck");
  132. cc.each(function(){
  133. if(_1e($(this).switchbutton("options").value,val)){
  134. $(this).switchbutton("check");
  135. }
  136. });
  137. return true;
  138. }
  139. cc=$(_12).find("input[name=\""+_1d+"\"][type=radio], input[name=\""+_1d+"\"][type=checkbox]");
  140. if(cc.length){
  141. cc._propAttr("checked",false);
  142. cc.each(function(){
  143. if(_1e($(this).val(),val)){
  144. $(this)._propAttr("checked",true);
  145. }
  146. });
  147. return true;
  148. }
  149. return false;
  150. };
  151. function _1e(v,val){
  152. if(v==String(val)||$.inArray(v,$.isArray(val)?val:[val])>=0){
  153. return true;
  154. }else{
  155. return false;
  156. }
  157. };
  158. function _1c(_1f,val){
  159. var _20=$(_12).find("[textboxName=\""+_1f+"\"],[sliderName=\""+_1f+"\"]");
  160. if(_20.length){
  161. for(var i=0;i<_14.fieldTypes.length;i++){
  162. var _21=_14.fieldTypes[i];
  163. var _22=_20.data(_21);
  164. if(_22){
  165. if(_22.options.multiple||_22.options.range){
  166. _20[_21]("setValues",val);
  167. }else{
  168. _20[_21]("setValue",val);
  169. }
  170. return true;
  171. }
  172. }
  173. }
  174. return false;
  175. };
  176. };
  177. function _23(_24){
  178. $("input,select,textarea",_24).each(function(){
  179. var t=this.type,tag=this.tagName.toLowerCase();
  180. if(t=="text"||t=="hidden"||t=="password"||tag=="textarea"){
  181. this.value="";
  182. }else{
  183. if(t=="file"){
  184. var _25=$(this);
  185. if(!_25.hasClass("textbox-value")){
  186. var _26=_25.clone().val("");
  187. _26.insertAfter(_25);
  188. if(_25.data("validatebox")){
  189. _25.validatebox("destroy");
  190. _26.validatebox();
  191. }else{
  192. _25.remove();
  193. }
  194. }
  195. }else{
  196. if(t=="checkbox"||t=="radio"){
  197. this.checked=false;
  198. }else{
  199. if(tag=="select"){
  200. this.selectedIndex=-1;
  201. }
  202. }
  203. }
  204. }
  205. });
  206. var _27=$(_24);
  207. var _28=$.data(_24,"form").options;
  208. for(var i=_28.fieldTypes.length-1;i>=0;i--){
  209. var _29=_28.fieldTypes[i];
  210. var _2a=_27.find("."+_29+"-f");
  211. if(_2a.length&&_2a[_29]){
  212. _2a[_29]("clear");
  213. }
  214. }
  215. _27.form("validate");
  216. };
  217. function _2b(_2c){
  218. _2c.reset();
  219. var _2d=$(_2c);
  220. var _2e=$.data(_2c,"form").options;
  221. for(var i=_2e.fieldTypes.length-1;i>=0;i--){
  222. var _2f=_2e.fieldTypes[i];
  223. var _30=_2d.find("."+_2f+"-f");
  224. if(_30.length&&_30[_2f]){
  225. _30[_2f]("reset");
  226. }
  227. }
  228. _2d.form("validate");
  229. };
  230. function _31(_32){
  231. var _33=$.data(_32,"form").options;
  232. $(_32).unbind(".form");
  233. if(_33.ajax){
  234. $(_32).bind("submit.form",function(){
  235. setTimeout(function(){
  236. _1(_32,_33);
  237. },0);
  238. return false;
  239. });
  240. }
  241. $(_32).bind("_change.form",function(e,t){
  242. _33.onChange.call(this,t);
  243. }).bind("change.form",function(e){
  244. var t=e.target;
  245. if(!$(t).hasClass("textbox-text")){
  246. _33.onChange.call(this,t);
  247. }
  248. });
  249. _34(_32,_33.novalidate);
  250. };
  251. function _35(_36,_37){
  252. _37=_37||{};
  253. var _38=$.data(_36,"form");
  254. if(_38){
  255. $.extend(_38.options,_37);
  256. }else{
  257. $.data(_36,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_36),_37)});
  258. }
  259. };
  260. function _39(_3a){
  261. if($.fn.validatebox){
  262. var t=$(_3a);
  263. t.find(".validatebox-text:not(:disabled)").validatebox("validate");
  264. var _3b=t.find(".validatebox-invalid");
  265. _3b.filter(":not(:disabled):first").focus();
  266. return _3b.length==0;
  267. }
  268. return true;
  269. };
  270. function _34(_3c,_3d){
  271. var _3e=$.data(_3c,"form").options;
  272. _3e.novalidate=_3d;
  273. $(_3c).find(".validatebox-text:not(:disabled)").validatebox(_3d?"disableValidation":"enableValidation");
  274. };
  275. $.fn.form=function(_3f,_40){
  276. if(typeof _3f=="string"){
  277. this.each(function(){
  278. _35(this);
  279. });
  280. return $.fn.form.methods[_3f](this,_40);
  281. }
  282. return this.each(function(){
  283. _35(this,_3f);
  284. _31(this);
  285. });
  286. };
  287. $.fn.form.methods={options:function(jq){
  288. return $.data(jq[0],"form").options;
  289. },submit:function(jq,_41){
  290. return jq.each(function(){
  291. _1(this,_41);
  292. });
  293. },load:function(jq,_42){
  294. return jq.each(function(){
  295. _11(this,_42);
  296. });
  297. },clear:function(jq){
  298. return jq.each(function(){
  299. _23(this);
  300. });
  301. },reset:function(jq){
  302. return jq.each(function(){
  303. _2b(this);
  304. });
  305. },validate:function(jq){
  306. return _39(jq[0]);
  307. },disableValidation:function(jq){
  308. return jq.each(function(){
  309. _34(this,true);
  310. });
  311. },enableValidation:function(jq){
  312. return jq.each(function(){
  313. _34(this,false);
  314. });
  315. }};
  316. $.fn.form.parseOptions=function(_43){
  317. var t=$(_43);
  318. return $.extend({},$.parser.parseOptions(_43,[{ajax:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)});
  319. };
  320. $.fn.form.defaults={fieldTypes:["combobox","combotree","combogrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","textbox","switchbutton"],novalidate:false,ajax:true,url:null,queryParams:{},onSubmit:function(_44){
  321. return $(this).form("validate");
  322. },success:function(_45){
  323. },onBeforeLoad:function(_46){
  324. },onLoadSuccess:function(_47){
  325. },onLoadError:function(){
  326. },onChange:function(_48){
  327. }};
  328. })(jQuery);