通过提交'click'触发器提交两次 HTML 表单



我很抱歉在SO上发布了一个类似于近100个问题的问题。我读了很多,尝试了一些解决方案,但既不能解决我的问题,也不能将答案完全与我的问题联系起来。

  1. 我有一个带有动作的form,键入post
  2. 我有一个那种形式的<input type="submit">
  3. 我需要通过在此输入上触发"click"来提交此表单。我用$('#imageUploadSubmit').click()做的

我不应该绕过"点击"这个提交按钮,因为还有其他与此相关的事件,它们是必不可少的,并且来自StrutsjQuery。因此,我不能直接提交表格。

问题:我的表单action(uploadImage)被调用了两次。我无法阻止它。

JSP的相关部分:

<s:form id="image-upload-form" action="uploadImage" method="post" enctype="multipart/form-data">
    <s:file name="userImage" label="User Image" id="userImageFile" />
    <input type="hidden" id="idForUpload" name="idForUpload" value="<s:property value="imageUploadReqAttrib.imageName" />" />
    <sj:submit id="imageUploadSubmit" value="Select Image" targets="previewImageDiv" 
        indicator="indicator" onBeforeTopics="before" onCompleteTopics="complete" style="display:none;"/>
</s:form>

以及生成的Html(带有相关元素)

<form id="image-upload-form" name="image-upload-form" action="/foo/uploadImage.action" method="post" enctype="multipart/form-data">
      <input type="file" name="userImage" value="" id="userImageFile"></td>
      <input type="hidden" id="idForUpload" name="idForUpload" value="1371711900.jpg">
      <input type="submit" id="imageUploadSubmit" value="Select Image" style="display:none;">
</form>

有没有一种方法可以让我找出点击时和点击后触发的所有事件?在Chrome检查器中?小提琴手?

如果有任何建议,我将不胜感激。非常感谢。

在谷歌上搜索了更多之后,这似乎是问题所在:所有版本>2.1.0的struts2 jquery插件都有这个问题。现在,我不确定问题是我使用插件的方式,还是它实际上是一个bug。社区中的一个开放的bug让我觉得这是一个bug。

因此,我从struts2-jquery-3.3移到了struts2-jquery-2.1.0:|

最新更新