2017-03-11 11 views
0

を提出した後、私は私のウェブサイト上の製品を通じてフィルタリングするために使用する次のような形式があります。

<div class="top-filter-select-container"> 
    <form method="GET" action="" id="sort-filter-pick"> 
     <select class="selectpicker" id="sort-filter"> 
      <option value="popularity">Sort by Popularity</option> 
      <option value="ratings">Sort by Ratings</option> 
      <option value="newest">Sort by Newest</option> 
      <option value="lowest">Sort by Lowest Price</option> 
     </select> 
    </form> 
</div> 

をオプションがあるとき、私は私のページをリロードしようとしていますjQuery form.submit()を使用して選択し、SQLクエリでフィルタリングするために使用する選択されたオプションを取得します。私は最終的には、この値を他のフィルタリング値とともに、より複雑なフィルタリングに使用したいと考えています。私のコードをテストする

$(function(){ 
    $('#sort-filter').on('change', function() { 
     var action = $(this).val(); 
     $("#sort-filter-pick").attr("action", "?sort=" + action); 
     this.form.submit(); 
    }); 
}); 

、私はちょうど私がPOST代わりのGETform methodを変更するが、GETでは動作しない場合、コードが動作するecho isset($_GET['sort']) ? $_GET['sort'] : null;

にしようとしています。 Amazonなどのウェブサイトでは、GETフォームメソッドが選択オプションからフィルタを適用する際に使用されますが、?sort= ...がフォームが送信された後にページURLに追加されていることに気付きます。 GETを使用してください。私は同じことをする正しい方法が何であるか疑問に思っていました。

+0

GETの値はフォーム本体では無視されますが、URLパラメータとして渡されます – bxN5

+0

URLにアクションを追加するにはどうすればよいですか?私はそれが私の主な質問だと思います – LaGuille

+0

onchangeイベントでajaxリクエストを行うか、ページを再ロードしてください – bxN5

答えて

1

フォーム要素に「名前」を追加する場合、jQueryを使用してソート基準を手動で追加する必要はありません。

HTML:

<div class="top-filter-select-container"> 
    <form method="GET" action="" id="sort-filter-pick"> 
     <select class="selectpicker" name="sort" id="sort-filter"> 
      <option value="popularity">Sort by Popularity</option> 
      <option value="ratings">Sort by Ratings</option> 
      <option value="newest">Sort by Newest</option> 
      <option value="lowest">Sort by Lowest Price</option> 
     </select> 
    </form> 
</div> 

Javascriptを:

$(function(){ 
    $('#sort-filter').on('change', function() { 
     this.form.submit(); 
    }); 
}); 

それともあなただけではなく、フォームを掲示よりもlocation.href = urlを使用することができます。

+0

Workedありがとう! – LaGuille

関連する問題