0

フォームは、クエリ文字列を操作する API に「取得」されます。

パラメータの 1 つは、バケーション パッケージを示す PackageID です。packageID を表示するには、get リクエストの末尾に「#packages」を追加する必要もあります。

すべてのフォーム「get」にパッケージがあるわけではないため、これを動的にする必要があります。「#packages」を値として隠しフィールドを追加しようとしましたが、「#」は自動的にエンコードされるため、サーバーが URL を取得しても登録されません。

javascriptを介してクエリ文字列に表示される「#packages」を動的に含める最良の方法は何ですか? ありがとう!

4

1 に答える 1

0

通常のフォーム送信を使用してアンカーを動的に追加することはできません。

submit イベントをインターセプトして、フォームの target 属性をアンカーを含む URL に変更することができます。少なくとも Firefox では、ブラウザーはクエリ文字列を適切な場所 (アンカーの前) に挿入します。

例えば:

<form action="test.htm" method="get" onsubmit="this.action += '#anchor'">
<input type="hidden" name="foo" value="bar">
<input type="submit">
</form> 

(注: これは説明のためのものです。submit イベント ハンドラーを HTML にインラインで含めません。)

または、独自の URL (クエリ文字列とアンカーを含む) を作成してから、それに設定document.locationすることもできます。

于 2009-11-05T02:45:37.550 に答える