1

我有一个非常简单的 html 表单:

<form enctype="multipart/form-data" method="POST" action="fileupload" id="image-upload-form" target="iframe-post-form">
    <input type="file" name="file" id="file-to-upload">
    <input type="submit" value="upload" id="image-upload-submit">
</form>

我正在使用iframe 发布表单库来提交我的图像。

当我使用以下 jquery 时,它可以完美运行:

$(document).ready(function(){
    $('#image-upload-form').iframePostForm({
        post : function() {
           $("#progress-indicator").show();
        },
        complete : function (response) {
        $("#progress-indicator").hide();
            try {
                json = $.parseJSON(response);
            } catch (e) {}
         }
     });
});

现在,我想消除提交按钮,而页面应该在选择文件后立即自动提交图像。我是 jquery 和 jscript 的初学者,我一定犯了一些小错误,但我无法弄清楚,为什么几乎相同的代码对我不起作用。这是错误代码(我可以在 firebug 中看到,我在该代码中的断点被命中,但图像不再提交):

$(function() {
    $('#file-to-upload').bind('change', function(event) {
        $('#image-upload-form').iframePostForm({
            post : function() {
                $("#progress-indicator").show();
            },
            complete : function (response) {
                $("#progress-indicator").hide();
                try {
                    json = $.parseJSON(response);
                } catch (e) {}
            }
        });
   });
});

非常感谢您的帮助。

解决方案:

收到@Huangism的建议后,终于找到了解决办法。我发布它以防有人需要解决同样的问题:

$(function() {
    $('#file-to-upload').bind('change', function(event) {
        $('#image-upload-form').submit().iframePostForm({
            post : function() {
                $("#progress-indicator").show();
            },
            complete : function (response) {
               $("#progress-indicator").hide();
               try {
                   json = $.parseJSON(response);                    
               } catch (e) {}
            }
        });
    });
});
4

1 回答 1

1

我从未使用过 iframe post form lib,但初始工作代码看起来像是在准备好文档时设置侦听器,在您的代码中,您将设置放在文件上传的更改函数中。所以基本上每次文件加载更改时,它都会每次设置整个帖子表单。

您需要在更改时调用表单的提交功能。我不太确定 post form lib 做了什么,我不知道你的整个代码结构,所以我真的不能提出任何其他建议。但是您的代码的问题是您将帖子表单的设置放在了错误的位置

于 2012-05-17T20:48:59.340 回答