/**
* 用来提交整个表单的JQUERY插件
* 作者及API查询:http://www.malsup.com/jquery/form/
*/
(function($){
$.fn.ajaxSubmit=function(_2){
if(!this.length){
log("ajaxSubmit: skipping submit process - no element selected");
return this;
}
if(typeof _2=="function"){
_2={success:_2};
}
_2=$.extend({url:this.attr("action")||window.location.toString(),type:this.attr("method")||"GET"},_2||{});
var _3={};
this.trigger("form-pre-serialize",[this,_2,_3]);
if(_3.veto){
log("ajaxSubmit: submit vetoed via form-pre-serialize trigger");
return this;
}
var a=this.formToArray(_2.semantic);
if(_2.data){
_2.extraData=_2.data;
for(var n in _2.data){
a.push({name:n,value:_2.data[n]});
}
}
if(_2.beforeSubmit&&_2.beforeSubmit(a,this,_2)===false){
log("ajaxSubmit: submit aborted via beforeSubmit callback");
return this;
}
this.trigger("form-submit-validate",[a,this,_2,_3]);
if(_3.veto){
log("ajaxSubmit: submit vetoed via form-submit-validate trigger");
return this;
}
var q=$.param(a);
if(_2.type.toUpperCase()=="GET"){
_2.url+=(_2.url.indexOf("?")>=0?"&":"?")+q;
_2.data=null;
}else{
_2.data=q;
}
var _7=this,_8=[];
if(_2.resetForm){
_8.push(function(){
_7.resetForm();
});
}
if(_2.clearForm){
_8.push(function(){
_7.clearForm();
});
}
if(!_2.dataType&&_2.target){
var _9=_2.success||function(){
};
_8.push(function(_a){
$(_2.target).html(_a).each(_9,arguments);
});
}else{
if(_2.success){
_8.push(_2.success);
}
}
_2.success=function(_b,_c){
for(var i=0,_e=_8.length;i<_e;i++){
_8[i](_b,_c,_7);
}
};
var _f=$("input:file",this).fieldValue();
var _10=false;
for(var j=0;j<_f.length;j++){
if(_f[j]){
_10=true;
}
}
if(_2.iframe||_10){
if($.browser.safari&&_2.closeKeepAlive){
$.get(_2.closeKeepAlive,fileUpload);
}else{
fileUpload();
}
}else{
$.ajax(_2);
}
this.trigger("form-submit-notify",[this,_2]);
return this;
function fileUpload(){
var _12=_7[0];
if($(":input[@name=submit]",_12).length){
alert("Error: Form elements must not be named \"submit\".");
return;
}
var _13=$.extend({},$.ajaxSettings,_2);
var id="jqFormIO"+(new Date().getTime());
var $io=$("");
var io=$io[0];
if($.browser.msie||$.browser.opera){
io.src="javascript:false;document.write(\"\");";
}
$io.css({position:"absolute",top:"-1000px",left:"-1000px"});
var xhr={responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){
},getResponseHeader:function(){
},setRequestHeader:function(){
}};
var g=_13.global;
if(g&&!$.active++){
$.event.trigger("ajaxStart");
}
if(g){
$.event.trigger("ajaxSend",[xhr,_13]);
}
var _19=0;
var _1a=0;
var sub=_12.clk;
if(sub){
var n=sub.name;
if(n&&!sub.disabled){
_2.extraData=_2.extraData||{};
_2.extraData[n]=sub.value;
if(sub.type=="image"){
_2.extraData[name+".x"]=_12.clk_x;
_2.extraData[name+".y"]=_12.clk_y;
}
}
}
setTimeout(function(){
var t=_7.attr("target"),a=_7.attr("action");
_7.attr({target:id,encoding:"multipart/form-data",enctype:"multipart/form-data",method:"POST",action:_13.url});
if(_13.timeout){
setTimeout(function(){
_1a=true;
cb();
},_13.timeout);
}
var _1e=[];
try{
if(_2.extraData){
for(var n in _2.extraData){
_1e.push($("").appendTo(_12)[0]);
}
}
$io.appendTo("body");
io.attachEvent?io.attachEvent("onload",cb):io.addEventListener("load",cb,false);
_12.submit();
}
finally{
_7.attr("action",a);
t?_7.attr("target",t):_7.removeAttr("target");
$(_1e).remove();
}
},10);
function cb(){
if(_19++){
return;
}
io.detachEvent?io.detachEvent("onload",cb):io.removeEventListener("load",cb,false);
var _20=0;
var ok=true;
try{
if(_1a){
throw "timeout";
}
var _22,doc;
doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;
if(doc.body==null&&!_20&&$.browser.opera){
_20=1;
_19--;
setTimeout(cb,100);
return;
}
xhr.responseText=doc.body?doc.body.innerHTML:null;
xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;
xhr.getResponseHeader=function(_24){
var _25={"content-type":_13.dataType};
return _25[_24];
};
if(_13.dataType=="json"||_13.dataType=="script"){
var ta=doc.getElementsByTagName("textarea")[0];
xhr.responseText=ta?ta.value:xhr.responseText;
}else{
if(_13.dataType=="xml"&&!xhr.responseXML&&xhr.responseText!=null){
xhr.responseXML=toXml(xhr.responseText);
}
}
_22=$.httpData(xhr,_13.dataType);
}
catch(e){
ok=false;
$.handleError(_13,xhr,"error",e);
}
if(ok){
_13.success(_22,"success");
if(g){
$.event.trigger("ajaxSuccess",[xhr,_13]);
}
}
if(g){
$.event.trigger("ajaxComplete",[xhr,_13]);
}
if(g&&!--$.active){
$.event.trigger("ajaxStop");
}
if(_13.complete){
_13.complete(xhr,ok?"success":"error");
}
setTimeout(function(){
$io.remove();
xhr.responseXML=null;
},100);
}
function toXml(s,doc){
if(window.ActiveXObject){
doc=new ActiveXObject("Microsoft.XMLDOM");
doc.async="false";
doc.loadXML(s);
}else{
doc=(new DOMParser()).parseFromString(s,"text/xml");
}
return (doc&&doc.documentElement&&doc.documentElement.tagName!="parsererror")?doc:null;
}
}
};
$.fn.ajaxForm=function(_29){
return this.ajaxFormUnbind().bind("submit.form-plugin",function(){
$(this).ajaxSubmit(_29);
return false;
}).each(function(){
$(":submit,input:image",this).bind("click.form-plugin",function(e){
var _2b=this.form;
_2b.clk=this;
if(this.type=="image"){
if(e.offsetX!=undefined){
_2b.clk_x=e.offsetX;
_2b.clk_y=e.offsetY;
}else{
if(typeof $.fn.offset=="function"){
var _2c=$(this).offset();
_2b.clk_x=e.pageX-_2c.left;
_2b.clk_y=e.pageY-_2c.top;
}else{
_2b.clk_x=e.pageX-this.offsetLeft;
_2b.clk_y=e.pageY-this.offsetTop;
}
}
}
setTimeout(function(){
_2b.clk=_2b.clk_x=_2b.clk_y=null;
},10);
});
});
};
$.fn.ajaxFormUnbind=function(){
this.unbind("submit.form-plugin");
return this.each(function(){
$(":submit,input:image",this).unbind("click.form-plugin");
});
};
$.fn.formToArray=function(_2d){
var a=[];
if(this.length==0){
return a;
}
var _2f=this[0];
var els=_2d?_2f.getElementsByTagName("*"):_2f.elements;
if(!els){
return a;
}
for(var i=0,max=els.length;i