1
  • 我有一个带有文件上传选项的页面,使用

    <input type="file" name="fileUpload" />
    

    它工作正常。

  • 我在屏幕上还有一个Clear按钮,它调用一个方法来将所有页面字段重置为其默认值。

  • 我使用@SkipValidationclear()方法,因此如果您清除包含无效数据的页面,则不会收到错误消息。

我的问题是:

如果我点击上传一个太大的文件然后点击Clear按钮,我会收到"File too large"消息,因为这是由默认堆栈(至少这是我的理解)而不是我的验证代码生成的。

document.getElementById('commentAction').reset();在该方法中使用,但这无济于事。

如何在没有任何错误消息的情况下重置页面?

UDATE 根据我收到的建议,我正在使用以下 jquery。

function clearForm()
{
    $(':input').not(':button, :submit, :reset, :hidden, :checkbox, :radio').val('');
    $(':checkbox, :radio').prop('checked', false);
}

以及Clear按钮的以下struts2

            <s:submit key="button.clear" cssClass="submit" onclick="clearDirtyFlag(); clearForm(); return false"  tabindex="18"/>

现在它会在不离开页面的情况下清除输入字段,但我在页面上有一个由以下 struts2 代码生成的列表

                <s:iterator value="commentViewList" >
                <div class="row rowaltcolor">
                    <div>
                        <s:url var="commentLink" action="commentAction" method="getCommentDetails">
                            <s:param name="commentId"><s:property value="commentInfo.commentId"/></s:param>
                        </s:url>
                        <div class="col-sm-1 col-xs-12 text-left"><s:a href="%{commentLink}"  tabindex="18"><s:property value="commentTypeCode"/></s:a></div>
                        <div class="col-sm-2 col-xs-12 text-left"><s:property value="commentInfo.name"/></div>  
                        <div class="col-sm-2 col-xs-12 text-left"><s:property value="commentInfo.organization"/></div>  
                </div>
            </s:iterator> 

此列表不会被清除,因为它不是生成的 html 中的字段。当我查看源 html 时,列表值在 html 中被硬编码。我可以在客户端清除列表还是需要在服务器端清除并重新显示页面?谢谢!

4

1 回答 1

0

对于使用谷歌搜索的任何人,我认为我应该将解决问题的内容放在答案中。使用

function clearForm()
{
     $(':input').not(':button, :submit, :reset, :hidden, :checkbox, :radio').val('');
     $(':checkbox, :radio').prop('checked', false);
}

清除所有输入字段(包括隐藏字段)而不执行操作。我仍然使用<s:submit>标签,但我使用 return false 来防止页面被提交,如下所示。

<s:submit key="button.clear" cssClass="submit" 
          onclick="clearForm(); clearDirtyFlag(); return false"  tabindex="18" />

对于我的页面不起作用,因为我需要清除页面上由 struts 生成的列表,因此我必须继续调用我的操作并再次呈现页面。所以我的最终提交代码是

<s:submit method="reset" key="button.clear" cssClass="submit" 
          onclick="clearForm(); clearDirtyFlag();"  tabindex="18" />
于 2015-11-13T14:38:07.750 回答