我正在使用Ben Nadel的iFrame Upload函數來編輯我正在處理的網站上的工具。我正在學習jQuery。該功能的作品非常漂亮。它是可重複使用的模式窗口的一部分,一切正常。但是,我想動態地告訴函數來自哪裏,因此它將適當的窗體加載到模態窗口中。我將如何將它傳遞給函數。現在它被硬編碼爲接收#uploadform。從本質上講,我想重新使用功能和類似的動作,預覽varialbles下降,形成ID等等如何將元素ID傳遞到我的jQuery函數中
$(function(){
var jForm = $("#uploadform");
jForm.submit(
function(objEvent){
var jThis = $(this);
var strName = ("uploader" + (new Date()).getTime());
var jFrame = $("<iframe name=\"" + strName + "\" src=\"about:blank\" />");
jFrame.css("display", "none");
jFrame.load(
function(objEvent){
var objUploadBody = window.frames[ strName ].document.getElementsByTagName("body")[ 0 ];
var jBody = $(objUploadBody);
var objData = eval("(" + jBody.html() + ")")
var thumb = ('thumbnails/' + eval(jBody.html()));
$("#header").css("background", "url(" + thumb + ") no-repeat center");
$("#preview").attr("src", thumb);
setTimeout(
function(){
jFrame.remove();
},100);
});
$("body:first").append(jFrame);
jThis
.attr("action", "upload_act_single.cfm")
.attr("method", "post")
.attr("enctype", "multipart/form-data")
.attr("encoding", "multipart/form-data")
.attr("target", strName);
});
});
那麼,本質上我的上傳是用formSubmit函數包裝的,對嗎?如果是這樣的話,我懷疑這也可以讓我定義我的其他變量,比如提交的數據以及其他我希望在提交中包含的數據。如果我在文件輸入字段中進行了onChange而不是onSubmit,這是否也允許我自動提交? – Ofeargall 2010-06-25 17:12:57
準確地說,您可以在標準HTML表單元素中定義方法和動作,並通過this.action/this.method以基本javascript調用它們。因此,只需要一個jQuery功能!是的,您可以使用onChange觸發器,只需在要提交的數據中使用$(「formElement.id」).val()。 你應該看看dojo工具包,特別是dojo.xhrGet/dojo.xhrPost(或用於多部分表單數據的dojo.io.iframe.send)方法;) – lintal 2010-06-25 19:47:45