検索操作用の HTML ページがあります。
ユーザーが検索条件を入力して検索ボタンをクリックすると、検索結果が同じページに表示されます。
ただし、検索結果ページでは、ユーザーが入力した検索フィールドの値は、同じページへの更新/リダイレクトによりクリアされます。
フィールド値を取得して表示するにはどうすればよいですか?
検索操作用の HTML ページがあります。
ユーザーが検索条件を入力して検索ボタンをクリックすると、検索結果が同じページに表示されます。
ただし、検索結果ページでは、ユーザーが入力した検索フィールドの値は、同じページへの更新/リダイレクトによりクリアされます。
フィールド値を取得して表示するにはどうすればよいですか?
私が思う最良のオプションは、検索フォームと結果ページをマージし、次のようにフォームをそれ自体に送信することです。
<form method="get" action="">
<input type="text" name="search" value=""/>
<input type="submit" value="Submit"/>
</form>
このように、検索で使用するフォーム送信を使用し、value=""
検索フィールドの属性を同じ値にすることで、検索されたアイテムに引き続きアクセスできます。PHPでは、これは次のようになります。
<form method="get" action="">
<input type="text" name="search" value="<?php echo $_GET["search"]; ?>"/>
<input type="submit" value="Submit"/>
</form>
それでも中間ページが必要な場合は、非表示の入力フィールドを使用します。
<input type="hidden" name="searched"/>
ユーザーにリダイレクトするフォームを送信してもらう場合。
あなたが探しているのは、GET 文字列変数を使用して検索フォームから値のペアを取得する方法だと思います。location
オブジェクト プロパティにアクセスする.search
と、クエリ文字列 ( GET
URL セグメント) があればそれが得られます。
例えば:
<form method="get">
<p>
<input type="text" name="q1" value="Search Criteria 1">
<input type="text" name="q2" value="Search Criteria 2">
<input type="text" name="q3" value="Search Criteria 3">
<button type="submit">Submit Search</button>
</p>
</form>
GET
URL に何が含まれているかを確認するために、次のことを試すことができます。
<script type="text/javascript">
(function(){
var getpairs = location.search.substring(1).split('&'),
pairs = {},
i = getpairs.length,
pair;
while (i--) {
pair = getpairs[i].split('=');
pairs[pair[0]] = decodeURI(pair[1]) || true;
}
if (pairs.length) {
console.log(pairs);
} else {
console.log('Nothing in GET string.');
}
})();
</script>