1

JSP ページに 2 つのフォームがあり、1 つにはテキスト フィールドが含まれています。他のフォームが送信されるたびに、そのテキスト フィールドに含まれる値がコピーされ、そのテキスト値が隠しパラメーターに書き込まれるようにする必要があります。

より明確に:

  1. 1 つのフォームの名前は「検索」です。
  2. 別のフォームの名前は「changeInitialForm」です。
  3. テキスト フィールドは「検索」フォームに含まれており、その名前は「searchString」です。
  4. 「changeInitialForm」には隠しフィールドがあり、これも「searchString」という名前です。
  5. 目的は、ユーザーがフォームを送信するか別のフォームを送信するかにかかわらず、テキスト フィールドの値とともに「searchString」パラメーターが渡されるようにすることです。

「changeInitialForm」が送信されたときに実行されるアクションをJavaScriptに含めようとしました。これは、テキストフィールドの値を読み取って隠しパラメーターに書き込みます。

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 に答える