1

我在一个 JSP 页面中有两个表单,一个包含一个文本字段。我需要确保每当提交另一个表单时,它都会复制该文本字段中包含的值,并将其文本值写入隐藏参数中。

更清楚:

  1. 一种形式被命名为“搜索”;
  2. 另一种形式名为“changeInitialForm”;
  3. 文本字段包含在“搜索”表单中,其名称为“searchString”;
  4. “changeInitialForm”有一个隐藏字段,也叫“searchString”;
  5. 目的是确保无论用户提交一个表单还是另一个表单,都会传递一个带有文本字段值的“searchString”参数。

我试图在javascript中包含一个动作,在提交“changeInitialForm”时执行,它读取文本字段值并将其写入隐藏参数:

function searchContacts(form)
{
    var searchString= document.search.searchString.value;
    form.searchString.value= searchString;
}

...

<form name="search" >
    <input type="text" name="searchString">
    <button name="search"> Cerca </button>
</form>

...


<form name="changeInitialForm" method="post" action="AddressBookView.jsp" onSubmit="searchContacts(this.form);">
    <input type="hidden" name="selectedInitial"/>
    <input type="hidden" name="status" value="view"/> 
    <input type="hidden" name="searchString" />
</form>   

但是在提交“changeInitialForm”之后,不管文本字段的值如何,并且传递了空参数,我在firebug中看到了这个:

在此处输入图像描述

我也很欣赏另一种解决方案,因为我知道我正在做的事情很棘手,但我没有找到另一种方法来做到这一点。"search" 和 "changeInitialForm" 不能合并在一个表单中,因为它们做的事情非常不同。

4

1 回答 1

1

以下似乎有效

function searchContacts(form)
{
    var searchString= document.search.searchString.value;
    form.searchString.value= searchString;
}

...

    Form 1:
<form name="search" >
    <input type="text" name="searchString">
    <button name="search"> Cerca </button>
</form>

...

    Form 2:
<form name="changeInitialForm" method="post" action="AddressBookView.jsp" onSubmit="searchContacts(this);">
    <input type="hidden" name="selectedInitial"/>
    <input type="hidden" name="status" value="view"/> 
    <input type="hidden" name="searchString" />
</form>

请注意,searchContacts(this.form)已替换为searchContacts(this).

经过问题作者的一些精确后更新:

当被一些 javascript 代码调用时,该onsubmit事件不会被触发。form.submit()因此,您在提交表单时需要searchContacts单独调用,例如使用

searchContacts(document.changeInitialForm);
document.changeInitialForm.submit();
于 2013-05-13T11:49:46.403 回答