2011-01-28 92 views
0

我正在實現一個解決方法,'不能上傳文件使用AJAX'的問題(簡而言之,表單目標的iframe,我想jQuery然後抓住內容的iframe並處理它)。觸發jQuery事件處理程序中的默認操作之前進一步處理

目前,我有一個提交處理程序,每當提交任何表單時都會調用它。它確定表單中是否有文件上傳字段,如果有,則解除綁定並調用submit()。不幸的是,直到自定義處理函數返回false後,submit()纔會被實際觸發。因此:

$('form').livequery('submit.custom', function() { 

    if ($(this).has('input[type=file]').length != 0) { 

     $(this).unbind('submit.custom'); 

     $('body').append('<div id="file_iframe"></div>'); 
     $('#file_iframe').append('<iframe name="postframe" id="postframe" class="hidden" src="" />'); 

     $(this).attr("target", "postframe"); 

     $(this).submit(); // <-- Doesn't trigger until after 'return false;' 

    } 

    return false; 

}); 

這意味着我無法處理iframe中的數據。相反,我想在當前自定義處理程序中綁定一個新的自定義處理程序(困惑了嗎?),然後(可能)是當前處理程序返回false後觸發的 - 但是我需要該新處理程序來觸發默認在繼續處理之前提交操作。有沒有辦法做到這一點,或以其他方式解決您可以想到的問題?

$('form').submit(function() { 

    // Do something to trigger default action, ie actually post the form 

    // Then do some other bits and pieces 

}); 

我很感激任何幫助!

回答

0

我建議使用這一個,而不是折磨你的自我(已通過)

http://www.uploadify.com/demos/

,因爲它也允許多個文件上傳和進步的反饋。

+0

我可以看到吸引力,但我儘量避免使用Flash,如果可能的話......感謝您的建議,都一樣。 – narnianUK 2011-01-28 11:42:08

相關問題