触发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
});
我很感激任何帮助!
我可以看到吸引力,但我尽量避免使用Flash,如果可能的话......感谢您的建议,都一样。 – narnianUK 2011-01-28 11:42:08