从另一个表单中包含的文本字段传递参数

时间:2013-05-13 11:12:05

标签: javascript html forms jsp

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

更清楚:

  1. 一种形式被命名为“搜索”;
  2. 另一种形式名为“changeInitialForm”;
  3. 文本字段包含在“搜索”表单中,其名称为“searchString”;
  4. “changeInitialForm”有一个隐藏字段,也叫做“searchString”;
  5. 目的是确保用户是否提交一个或另一个表单,传递“searchString”参数,并带有文本字段的值。
  6. 我尝试在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:

    enter image description here

    我也很欣赏另一种解决方案,因为我知道我在做什么是棘手的,但我找不到另一种方法来做到这一点。 “search”和“changeInitialForm”不能以单一形式连接,因为它们做的事情非常不同。

1 个答案:

答案 0 :(得分: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();