Javascript Iframe Post Form-在更改输入字段时提交html表单
我有一个非常简单的html表单:Javascript Iframe Post Form-在更改输入字段时提交html表单,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个非常简单的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
<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>
现在,我想取消提交按钮,而页面应该在选择文件后立即自动提交图像。我是jquery和jscript的初学者,我一定犯了一些小错误,但我不明白为什么几乎相同的代码对我不起作用。下面是错误的代码(我可以在firebug中看到,我在代码中的断点被击中,但图像不再提交):
我将非常感谢你的帮助
解决方案:
在收到@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) {}
}
});
});
});
我从未使用过iframe post form lib,但最初的工作代码看起来像是在文档就绪时设置侦听器,在代码中,您将设置放在要上载的文件的change函数中。所以基本上每次加载的文件发生变化时,它都会设置整个post表单
您需要在更改时调用表单的提交功能。我不太确定post-form-lib是做什么的,我也不知道您的整个代码结构,所以我真的不能提出任何其他建议。但是你的代码的问题是你把post表单的设置放错了地方我从来没有使用过iframe post form lib,但是最初的工作代码看起来像是在文档就绪时设置侦听器,在你的代码中,你把设置放在了要上传的文件的change函数中。所以基本上每次加载的文件发生变化时,它都会设置整个post表单
您需要在更改时调用表单的提交功能。我不太确定post-form-lib是做什么的,我也不知道您的整个代码结构,所以我真的不能提出任何其他建议。但是代码的问题是,您将post表单的设置放在了错误的位置您应该添加解决方案作为答案,并确保详细说明。然后将其标记为正确,是的,您可以这样做,您应该添加您的解决方案作为答案,并确保详细说明。然后将其标记为正确,是的,您可以这样做,您应该这样做
$(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) {}
}
});
});
});
$(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) {}
}
});
});
});