1

表示および非表示の入力フィールドがいくつかある get フォームがあります。フォームが送信されると、選択されたフィールドとその値が、フォームに配置された順序で URL に追加されます。jQueryを使用してURLのパラメータを並べ替える方法はありますか? 使いやすさの理由から、フォーム自体の要素を並べ替えることができないことに注意してください。

「なぜそれをやりたいのか?」という疑問が生じることはわかっていますが、その理由は、静的ページにアクセスするためです。そのため、パラメーターの順序は、静的ページの URL とまったく同じにする必要があります。たとえば、私のフォームは URL を返します。

http://someurl?names=comm&search=all&type=list

静的ページには次の URL があります。

http://someurl?search=all&type=list&names=comm

簡略化されたフォームの例は次のとおりです。

<form  id="search_form" method="get" action="http://www.cbif.gc.ca/pls/pp/ppack.jump" >

<h2>Choose which names you want to be displayed</h2>
<select name="names">
    <option value="comm">Common names</option>
    <option value="sci">Scientific names</option>
</select>

<h2>Choose how you want to view the results</h2>

<input type="radio" name="search" value="all" id="complete" checked = "checked" />
<label for="complete" id="completeLabel">Complete list</label>
<br/>

<input type="radio" name="p_null" value="house" id="house" />
<label for="house" id="houseLabel">House plants only</label>
<br/>

<input type="radio" name="p_null" value="illust" id="illustrat" />
<label for="illustrat" id="illustratLabel">Plants with Illustrations</label>
<br/>


<input type="hidden" name="type" value="list" />

<input type="submit" value="Submit" />
</form> 

$(#search_form).serializeArray() を使用して値を含むフォーム フィールドを取得し、必要に応じて配列を操作できますが、元に戻す方法がわかりません。つまり、シリアル化された値を変更して、送信された URL に自分のパラメータの順序。これが正しい方法であるかどうかさえわからないので、どんな指針でも大歓迎です。

4

1 に答える 1

1

簡単な方法の 1 つは、送信ボタンが押されたときに実際のフォーム要素を並べ替え、フォームを非表示にしてユーザーに見えないようにすることです。

もう 1 つの方法は、すべての表示可能なフォーム要素に名前を付けず、送信時にすべてのデータを非表示の入力フィールドに好きな順序で転送することです。

ただし、この場合、データは非常に単純なので (エスケープを行う必要はありません)、フォーム要素が変更されるたびに必要な URL を文字列として構成し、それを送信ボタンの href として配置することもできます。実際に送信するのではなく、リンクをたどるだけです。

于 2013-06-25T22:19:11.143 に答える