Ajaxform&;jQuery对话框-表单提交两次
这是一个场景——我有一个页面,其中有一个打开jQueryUI对话框的链接。对话框中有一个小表单(用于上传图像)。“操作”页面处理并返回要返回到对话框的图像 现在,这一切都如预期的那样工作-然而,出于某种原因,它被处理了两次。从视觉上看,没有什么可以显示它被提交和处理了两次(我只知道因为我使用的是Firebug,我试图找出为什么处理时间比预期的要长) 看看前面的答案,建议jQuery代码应该在对话框之外,但它已经在对话框之外了。我已经用尽了我现在能想到的一切办法。我是JS/jQuery新手,所以完全有可能我遗漏了一些简单的东西。无论哪种方式,指针都很受欢迎!下面是我的代码Ajaxform&;jQuery对话框-表单提交两次,jquery,ajaxform,Jquery,Ajaxform,这是一个场景——我有一个页面,其中有一个打开jQueryUI对话框的链接。对话框中有一个小表单(用于上传图像)。“操作”页面处理并返回要返回到对话框的图像 现在,这一切都如预期的那样工作-然而,出于某种原因,它被处理了两次。从视觉上看,没有什么可以显示它被提交和处理了两次(我只知道因为我使用的是Firebug,我试图找出为什么处理时间比预期的要长) 看看前面的答案,建议jQuery代码应该在对话框之外,但它已经在对话框之外了。我已经用尽了我现在能想到的一切办法。我是JS/jQuery新手,所以完
<head[...]>
<script>
$(function() {
$('#submitImage').bind('click', function(){
$(".preview").html('');
$(".preview").html('<img src="/images/elements/loaders/103.png" alt="Uploading...." style="text-align:center;"//>');
$("#imgadd").ajaxForm({
clearForm: 'true',
target: '.preview'
}).submit();
});
});
</script>
$(函数(){
$('#submitImage').bind('click',function(){
$(“.preview”).html(“”);
$(“.preview”).html(“”);
$(“#imgadd”).ajaxForm({
clearForm:'真',
目标:'.preview'
}).submit();
});
});
[…页面的其余部分]
<!-- Dialog -->
<div id="customDialog" class="customDialog" title="Upload or Insert Image">
<form id="imgadd" action="a_blogimgupload.cfm" method="post" enctype="multipart/form-data">
<input type="file" class="fileInput" name="blogimg" /> <input type="submit" id="submitImage" value="Upload" /></form>
<div class="preview">
<ul>
<li><img src="imgthumb.png" alt="" /><a href="javascript:;" title="Insert" onclick="addImage('imgfull.png');return false;">Insert</a></li>
</ul>
</div>
您。ajaxForm
用于准备表单,以便与ajax一起发送。您可以使用它——该表单的每次提交都将使用AJAX完成。
所以,您必须将代码移到下面的外部单击
$("#imgadd").ajaxForm({
clearForm: 'true',
target: '.preview'
})
(另外,您不需要在单击处理程序中调用.submit(),因为它已经导致提交)
或者,您可以按如下方式更改代码:
$('#submitImage').bind('click', function(e){
$(".preview").html('');
$(".preview").html('<img src="/images/elements/loaders/103.png" alt="Uploading...." style="text-align:center;"//>');
$("#imgadd").ajaxForm({
clearForm: 'true',
target: '.preview'
}).submit();
e.preventDefault();
});
$('submitImage').bind('click',函数(e){
$(“.preview”).html(“”);
$(“.preview”).html(“”);
$(“#imgadd”).ajaxForm({
clearForm:'真',
目标:'.preview'
}).submit();
e、 预防默认值();
});
其中e.preventDefault()
(好吧,从来没有尝试过这样的事情,也许你也需要做e.stopPropagation(),但我不这么认为)将阻止浏览器执行默认操作,即提交。但最好是在这里做第一件事
此外,还有
.ajaxSubmit()
接受与ajaxForm相同的选项,但它也会导致立即提交。但是如果您要使用它,您将需要删除。提交和e。仍然需要preventDefault
。谢谢李。我的在IE中发布了多次。现在我的也在IE中工作。发布我的一些javascript
$(document).ready(function () {
$("#uploadSubmit").button().click(function (e) {
submitUploadForm();
e.preventDefault();
return false;
});
});
function submitUploadForm() {
$(function () {
$('#reportOptions').ajaxForm({
success: SubmitSuccesful,
error: AjaxError,
type: 'post',
cache: false,
url: baseHref() + 'Upload'
}).submit();
});
}
非常感谢。我在第一次尝试中得到了你的第二个例子。非常感谢!