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

时间:2011-01-28 11:35:39

标签: jquery forms file-upload form-submit event-triggers

我正在实施“无法使用AJAX上传文件”问题的解决方法(简而言之,表单以iframe为目标,我希望jQuery然后抓取iframe的内容并对其进行处理)。

目前,我有一个提交处理程序,只要提交任何表单就会调用它。它确定表单中是否有文件上载字段,如果存在,则取消绑定并调用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

});

我会感激任何帮助!

1 个答案:

答案 0 :(得分:0)

我建议使用这个而不是折磨你的自己(通过那个)

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

因为它还允许多个文件上传和进度反馈。

相关问题