Javascript阻止Spring表单被POST

时间:2009-07-14 22:04:07

标签: javascript spring jsp forms

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

我在页面上有一个搜索表单,可以根据用户选择的条件浏览报表目录,而且大多数情况下它都能正常工作。但是,有一系列事件会触发错误。

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

以下是2个场景,1表示它按预期工作,1表示错误。

  • 输入内容
  • 点击搜索
    • 显示结果
  • 点击搜索
    • 显示结果(与之前相同)
  • 输入新内容并点击搜索
    • 显示结果(新的,正确的结果)

这是错误

  • 输入内容
  • 点击搜索
    • 显示结果
  • 点击运行JavaScript的“清除表单”
    • 表单已清除
  • [可选,它不会改变任何东西:输入内容]
  • 点击搜索
    • 结果没有变化< - 这是错误
  • 再次点击搜索
    • 现在显示了正确的结果

这是JavaScript的参考(我不知道这是好还是坏JS,我以前没有写过)

function clearForm(oForm) {

  var elements = oForm.elements;

  oForm.reset();

  for(i=0; i<elements.length; i++) {

      field_type = elements[i].type.toLowerCase();

      switch(field_type) {

        case "text":
        case "password":
        case "textarea":
              case "hidden":

          elements[i].value = "";
          break;

        case "radio":
        case "checkbox":
            if (elements[i].checked) {
              elements[i].checked = false;
          }
          break;

        case "select-one":
        case "select-multi":
                    elements[i].selectedIndex = 0;
          break;

        default:
          break;
      }
   }
}

2 个答案:

答案 0 :(得分:1)

我通过更改清晰格式Javascript来解决这个问题,只清除我指定的框。我假设上面发布的广义函数清除了Spring发布的一些隐藏值并导致错误。

答案 1 :(得分:0)

你不能只使用:

<input type="reset" /> 

清除表格?我很确定它会在页面加载时设置表单。