2

私は次の3つのURLを持っています:

http://www.test.com?a=1
http://www.test.com?a=1&b=3
http://www.test.com?a=1&b=2&c=99

今、私は次のようなドロップダウンメニューを持っています:

<select name="b">
    <option value="1">1</option>
     ...
</select>

次に、そのパラメータを既存のパラメータのリストに追加するか、パラメータがすでに存在する場合は編集してから、ページを更新します。何か案は?ありがとう

4

4 に答える 4

1

正規表現の方法でそれを行うことができます:

var myNewValue = 1; // the new value of input named b
var url = window.location.href;
if(url.match(/\Wb=/)) url = url.replace(/(\Wb=)[^&]*/, "$1"+myNewValue);
else url = url+"&b="+myNewValue;
window.location.href = url;
于 2010-03-30T13:42:15.200 に答える
1

質問に両方のタグを付けたので、この問題に PHP または JavaScript を使用しているかどうかはわかりません。

PHP では、フォームに古いパラメーターも含めない限り、フォームを送信すると他のパラメーターが消えます。たとえば、次のようになります。

<select name="b">
    <option value="1">1</option>
    ...
</select>
<input type="hidden" name="a" value="<?php echo htmlentities(@$_GET['a']); ?>" />
<input type="hidden" name="c" value="<?php echo htmlentities(@$_GET['c']); ?>" />

ただし、Javascript を使用している場合は、他の人が述べたように、クエリ文字列を解析する必要がありますが、基本的に同じことを行う必要があります。他のパラメーターを自分の場所に追加します。

于 2010-04-03T00:27:31.653 に答える
0

非表示の入力として保持したいパラメーターは、新しいフォーム My PHP is ruby​​, but here going に記述する必要があります。

<input type="hidden" name="a" value="<?php echo (int)$_GET['a']; ?>" />

正規表現を使用してパラメーター リストを解析しない限り、JavaScript はページの要求パラメーターに直接アクセスできません。ただし、サーバー側のテクノロジー、あなたの場合は PHP は、ページを生成するときにアクセスできます。

フォームに非表示の入力を作成すると、ユーザーは値を変更できなくなりますが、フォームが再度送信されたときに値が含まれます。

于 2010-03-30T13:50:38.127 に答える
0

そのパラメータを既存のパラメータのリストに追加するか、すでに存在する場合はパラメータを編集したい

parse_str () / parse_url() 関数を使用して URL を連想配列に分割してから、新しい値で配列要素を追加/更新し、http_build_url() で有効な URL に戻すことができます。PHPマニュアルの例を見てください。それについて書くよりもコーディングする方が簡単です;)


"次に、ページを更新します"

非表示のフォーム要素に関する回答は悪くありませんが、ユーザーが何が起こるかを理解できるかどうか疑問に思います (以前の選択が記憶されているという目に見える確認はありませんが、何らかの方法でそれを保存します)。フォームが php で生成され、静的 HTML ではないと仮定すると、フォームを表示するときに最初のフォーム送信で選択されたオプションが強調表示されていることを確認しないでください。その後の提出?

<select name="b">
    <option value="1" <?php if(isset($params['b']) && $params['b'] == 1) echo 'selected="selected"'; ?>>1</option>
</select>

少し面倒に見えますが、ユーザーの入力を再表示する習慣をつければ、入力を節約できます (何らかの検証のために空のフォームに 3 回入力する必要がある場合、ユーザーはあなたのページを嫌うでしょう)。

オプションタグの適切な属性は「選択済み」、チェックボックス/ラジオボタンの場合は「チェック済み」、テキスト入力には属性「値」があり、好きなものを入力できます。あなたにとって明らかなことについて話しているのではないかどうかわかりません...

于 2010-04-10T21:03:30.560 に答える