防止发布Spring表单的Javascript

防止发布Spring表单的Javascript,javascript,spring,jsp,forms,Javascript,Spring,Jsp,Forms,这里发生了奇怪的问题。我正在开发一个JSR168 portlet,它使用Spring和Spring表单taglib 我在一个页面上有一个搜索表单,可以根据用户选择的标准浏览报告目录,在大多数情况下,它运行良好。但是,有一个触发错误的事件序列 我发现有一个JavaScript函数可以清除用户可以指定的7个条件。它清除所有文本框,将所有下拉列表的选定索引设置为0,并将一组单选按钮默认为我想要的默认单选按钮。这一切都很好,而且效果很好 下面是两个场景,一个演示它按预期工作,另一个显示错误 输入某物

这里发生了奇怪的问题。我正在开发一个JSR168 portlet,它使用Spring和Spring表单taglib

我在一个页面上有一个搜索表单,可以根据用户选择的标准浏览报告目录,在大多数情况下,它运行良好。但是,有一个触发错误的事件序列

我发现有一个JavaScript函数可以清除用户可以指定的7个条件。它清除所有文本框,将所有下拉列表的选定索引设置为0,并将一组单选按钮默认为我想要的默认单选按钮。这一切都很好,而且效果很好

下面是两个场景,一个演示它按预期工作,另一个显示错误

  • 输入某物
  • 单击搜索
    • 结果如下所示
  • 单击搜索
    • 显示结果(与之前相同)
  • 键入新内容,然后单击“搜索”
    • 显示结果(新的、正确的结果)
这是错误

  • 输入某物
  • 单击搜索
    • 结果如下所示
  • 单击运行JavaScript的“清除表单”
    • 表格已清除
  • [可选,它不会更改任何内容:键入内容]
  • 单击搜索
    • 结果没有变化您不能只使用:

      <input type="reset" /> 
      
      
      

      清理你的表格?我很确定它会将表单设置为页面加载时的状态。

      我通过更改clear form Javascript以仅清除我指定的框来解决这个问题。我假设上面发布的通用函数清除了Spring放置的一些隐藏值并导致了错误。

      不幸的是,它并没有那么简单。我用支持bean中的数据加载表单(因为有7个字段,这对用户来说很好,因为它可以让用户看到他们刚刚搜索的内容,并且只编辑一件事情,而不必重新键入所有内容)。因为这是加载的默认数据,所以执行重置只会返回到该数据,而不是实际清空文本字段并将DDL默认为其中的第一项。您希望输入返回到其原始值吗?您是否可以将它们作为变量存储在javascript中?如果Spring通过一个隐藏字段(如JSF所能做的)来维护viewstate,那么您完全正确。简单/明显的解决方法是跳过重置函数中的隐藏字段。即,从您的交换机中删除
      案例“隐藏”:
      <input type="reset" />