123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- /**
- * EasyUI for jQuery 1.6.10
- *
- * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- (function($){
- function _1(_2,_3){
- var _4=$.data(_2,"form").options;
- $.extend(_4,_3||{});
- var _5=$.extend({},_4.queryParams);
- if(_4.onSubmit.call(_2,_5)==false){
- return;
- }
- var _6=$(_2).find(".textbox-text:focus");
- _6.triggerHandler("blur");
- _6.focus();
- var _7=null;
- if(_4.dirty){
- var ff=[];
- $.map(_4.dirtyFields,function(f){
- if($(f).hasClass("textbox-f")){
- $(f).next().find(".textbox-value").each(function(){
- ff.push(this);
- });
- }else{
- ff.push(f);
- }
- });
- _7=$(_2).find("input[name]:enabled,textarea[name]:enabled,select[name]:enabled").filter(function(){
- return $.inArray(this,ff)==-1;
- });
- _7._propAttr("disabled",true);
- }
- if(_4.ajax){
- if(_4.iframe){
- _8(_2,_5);
- }else{
- if(window.FormData!==undefined){
- _9(_2,_5);
- }else{
- _8(_2,_5);
- }
- }
- }else{
- $(_2).submit();
- }
- if(_4.dirty){
- _7._propAttr("disabled",false);
- }
- };
- function _8(_a,_b){
- var _c=$.data(_a,"form").options;
- var _d="easyui_frame_"+(new Date().getTime());
- var _e=$("<iframe id="+_d+" name="+_d+"></iframe>").appendTo("body");
- _e.attr("src",window.ActiveXObject?"javascript:false":"about:blank");
- _e.css({position:"absolute",top:-1000,left:-1000});
- _e.bind("load",cb);
- _f(_b);
- function _f(_10){
- var _11=$(_a);
- if(_c.url){
- _11.attr("action",_c.url);
- }
- var t=_11.attr("target"),a=_11.attr("action");
- _11.attr("target",_d);
- var _12=$();
- try{
- for(var n in _10){
- var _13=$("<input type=\"hidden\" name=\""+n+"\">").val(_10[n]).appendTo(_11);
- _12=_12.add(_13);
- }
- _14();
- _11[0].submit();
- }
- finally{
- _11.attr("action",a);
- t?_11.attr("target",t):_11.removeAttr("target");
- _12.remove();
- }
- };
- function _14(){
- var f=$("#"+_d);
- if(!f.length){
- return;
- }
- try{
- var s=f.contents()[0].readyState;
- if(s&&s.toLowerCase()=="uninitialized"){
- setTimeout(_14,100);
- }
- }
- catch(e){
- cb();
- }
- };
- var _15=10;
- function cb(){
- var f=$("#"+_d);
- if(!f.length){
- return;
- }
- f.unbind();
- var _16="";
- try{
- var _17=f.contents().find("body");
- _16=_17.html();
- if(_16==""){
- if(--_15){
- setTimeout(cb,100);
- return;
- }
- }
- var ta=_17.find(">textarea");
- if(ta.length){
- _16=ta.val();
- }else{
- var pre=_17.find(">pre");
- if(pre.length){
- _16=pre.html();
- }
- }
- }
- catch(e){
- }
- _c.success.call(_a,_16);
- setTimeout(function(){
- f.unbind();
- f.remove();
- },100);
- };
- };
- function _9(_18,_19){
- var _1a=$.data(_18,"form").options;
- var _1b=new FormData($(_18)[0]);
- for(var _1c in _19){
- _1b.append(_1c,_19[_1c]);
- }
- $.ajax({url:_1a.url,type:"post",xhr:function(){
- var xhr=$.ajaxSettings.xhr();
- if(xhr.upload){
- xhr.upload.addEventListener("progress",function(e){
- if(e.lengthComputable){
- var _1d=e.total;
- var _1e=e.loaded||e.position;
- var _1f=Math.ceil(_1e*100/_1d);
- _1a.onProgress.call(_18,_1f);
- }
- },false);
- }
- return xhr;
- },data:_1b,dataType:"html",cache:false,contentType:false,processData:false,complete:function(res){
- _1a.success.call(_18,res.responseText);
- }});
- };
- function _20(_21,_22){
- var _23=$.data(_21,"form").options;
- if(typeof _22=="string"){
- var _24={};
- if(_23.onBeforeLoad.call(_21,_24)==false){
- return;
- }
- $.ajax({url:_22,data:_24,dataType:"json",success:function(_25){
- _26(_25);
- },error:function(){
- _23.onLoadError.apply(_21,arguments);
- }});
- }else{
- _26(_22);
- }
- function _26(_27){
- var _28=$(_21);
- for(var _29 in _27){
- var val=_27[_29];
- if(!_2a(_29,val)){
- if(!_2b(_29,val)){
- _28.find("input[name=\""+_29+"\"]").val(val);
- _28.find("textarea[name=\""+_29+"\"]").val(val);
- _28.find("select[name=\""+_29+"\"]").val(val);
- }
- }
- }
- _23.onLoadSuccess.call(_21,_27);
- _28.form("validate");
- };
- function _2a(_2c,val){
- var _2d=["switchbutton","radiobutton","checkbox"];
- for(var i=0;i<_2d.length;i++){
- var _2e=_2d[i];
- var cc=$(_21).find("["+_2e+"Name=\""+_2c+"\"]");
- if(cc.length){
- cc[_2e]("uncheck");
- cc.each(function(){
- if(_2f($(this)[_2e]("options").value,val)){
- $(this)[_2e]("check");
- }
- });
- return true;
- }
- }
- var cc=$(_21).find("input[name=\""+_2c+"\"][type=radio], input[name=\""+_2c+"\"][type=checkbox]");
- if(cc.length){
- cc._propAttr("checked",false);
- cc.each(function(){
- if(_2f($(this).val(),val)){
- $(this)._propAttr("checked",true);
- }
- });
- return true;
- }
- return false;
- };
- function _2f(v,val){
- if(v==String(val)||$.inArray(v,$.isArray(val)?val:[val])>=0){
- return true;
- }else{
- return false;
- }
- };
- function _2b(_30,val){
- var _31=$(_21).find("[textboxName=\""+_30+"\"],[sliderName=\""+_30+"\"]");
- if(_31.length){
- for(var i=0;i<_23.fieldTypes.length;i++){
- var _32=_23.fieldTypes[i];
- var _33=_31.data(_32);
- if(_33){
- if(_33.options.multiple||_33.options.range){
- _31[_32]("setValues",val);
- }else{
- _31[_32]("setValue",val);
- }
- return true;
- }
- }
- }
- return false;
- };
- };
- function _34(_35){
- $("input,select,textarea",_35).each(function(){
- if($(this).hasClass("textbox-value")){
- return;
- }
- var t=this.type,tag=this.tagName.toLowerCase();
- if(t=="text"||t=="hidden"||t=="password"||tag=="textarea"){
- this.value="";
- }else{
- if(t=="file"){
- var _36=$(this);
- if(!_36.hasClass("textbox-value")){
- var _37=_36.clone().val("");
- _37.insertAfter(_36);
- if(_36.data("validatebox")){
- _36.validatebox("destroy");
- _37.validatebox();
- }else{
- _36.remove();
- }
- }
- }else{
- if(t=="checkbox"||t=="radio"){
- this.checked=false;
- }else{
- if(tag=="select"){
- this.selectedIndex=-1;
- }
- }
- }
- }
- });
- var tmp=$();
- var _38=$(_35);
- var _39=$.data(_35,"form").options;
- for(var i=0;i<_39.fieldTypes.length;i++){
- var _3a=_39.fieldTypes[i];
- var _3b=_38.find("."+_3a+"-f").not(tmp);
- if(_3b.length&&_3b[_3a]){
- _3b[_3a]("clear");
- tmp=tmp.add(_3b);
- }
- }
- _38.form("validate");
- };
- function _3c(_3d){
- _3d.reset();
- var _3e=$(_3d);
- var _3f=$.data(_3d,"form").options;
- for(var i=_3f.fieldTypes.length-1;i>=0;i--){
- var _40=_3f.fieldTypes[i];
- var _41=_3e.find("."+_40+"-f");
- if(_41.length&&_41[_40]){
- _41[_40]("reset");
- }
- }
- _3e.form("validate");
- };
- function _42(_43){
- var _44=$.data(_43,"form").options;
- $(_43).unbind(".form");
- if(_44.ajax){
- $(_43).bind("submit.form",function(){
- setTimeout(function(){
- _1(_43,_44);
- },0);
- return false;
- });
- }
- $(_43).bind("_change.form",function(e,t){
- if($.inArray(t,_44.dirtyFields)==-1){
- _44.dirtyFields.push(t);
- }
- _44.onChange.call(this,t);
- }).bind("change.form",function(e){
- var t=e.target;
- if(!$(t).hasClass("textbox-text")){
- if($.inArray(t,_44.dirtyFields)==-1){
- _44.dirtyFields.push(t);
- }
- _44.onChange.call(this,t);
- }
- });
- _45(_43,_44.novalidate);
- };
- function _46(_47,_48){
- _48=_48||{};
- var _49=$.data(_47,"form");
- if(_49){
- $.extend(_49.options,_48);
- }else{
- $.data(_47,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_47),_48)});
- }
- };
- function _4a(_4b){
- if($.fn.validatebox){
- var t=$(_4b);
- t.find(".validatebox-text:not(:disabled)").validatebox("validate");
- var _4c=t.find(".validatebox-invalid");
- _4c.filter(":not(:disabled):first").focus();
- return _4c.length==0;
- }
- return true;
- };
- function _45(_4d,_4e){
- var _4f=$.data(_4d,"form").options;
- _4f.novalidate=_4e;
- $(_4d).find(".validatebox-text:not(:disabled)").validatebox(_4e?"disableValidation":"enableValidation");
- };
- $.fn.form=function(_50,_51){
- if(typeof _50=="string"){
- this.each(function(){
- _46(this);
- });
- return $.fn.form.methods[_50](this,_51);
- }
- return this.each(function(){
- _46(this,_50);
- _42(this);
- });
- };
- $.fn.form.methods={options:function(jq){
- return $.data(jq[0],"form").options;
- },submit:function(jq,_52){
- return jq.each(function(){
- _1(this,_52);
- });
- },load:function(jq,_53){
- return jq.each(function(){
- _20(this,_53);
- });
- },clear:function(jq){
- return jq.each(function(){
- _34(this);
- });
- },reset:function(jq){
- return jq.each(function(){
- _3c(this);
- });
- },validate:function(jq){
- return _4a(jq[0]);
- },disableValidation:function(jq){
- return jq.each(function(){
- _45(this,true);
- });
- },enableValidation:function(jq){
- return jq.each(function(){
- _45(this,false);
- });
- },resetValidation:function(jq){
- return jq.each(function(){
- $(this).find(".validatebox-text:not(:disabled)").validatebox("resetValidation");
- });
- },resetDirty:function(jq){
- return jq.each(function(){
- $(this).form("options").dirtyFields=[];
- });
- }};
- $.fn.form.parseOptions=function(_54){
- var t=$(_54);
- return $.extend({},$.parser.parseOptions(_54,[{ajax:"boolean",dirty:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)});
- };
- $.fn.form.defaults={fieldTypes:["tagbox","combobox","combotree","combogrid","combotreegrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","passwordbox","filebox","textbox","switchbutton","radiobutton","checkbox"],novalidate:false,ajax:true,iframe:true,dirty:false,dirtyFields:[],url:null,queryParams:{},onSubmit:function(_55){
- return $(this).form("validate");
- },onProgress:function(_56){
- },success:function(_57){
- },onBeforeLoad:function(_58){
- },onLoadSuccess:function(_59){
- },onLoadError:function(){
- },onChange:function(_5a){
- }};
- })(jQuery);
|