触发jQuery事件处理程序中的默认操作之前进一步处理

触发jQuery事件处理程序中的默认操作之前进一步处理

问题描述:

我正在实现一个解决方法,'不能上传文件使用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 

}); 

我很感激任何帮助!

我建议使用这一个,而不是折磨你的自我(已通过)

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

,因为它也允许多个文件上传和进步的反馈。

+0

我可以看到吸引力,但我尽量避免使用Flash,如果可能的话......感谢您的建议,都一样。 – narnianUK 2011-01-28 11:42:08