0

私はこのロールメニューを持っています:

<form class="woocommerce-ordering" method="get">
<select name="orderby" class="orderby">
<option value="menu_order" >Default sorting</option>
<option value="popularity"  selected='selected'>Sort by popularity</option>
<option value="rating" >Sort by average rating</option>
<option value="date" >Sort by newness</option>
<option value="price" >Sort by price: low to high</option>
<option value="price-desc" >Sort by price: high to low</option>    
</select>
<input type="hidden" name="attest" value="true" /></form>

ボタンを使用して値を変更する必要があります。ボタンを使用するだけで、「価格で並べ替え: 低から高」などの URL にデータを送信するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

実際の送信ボタンが必要な場合は、使用できます

<input type="submit" name="orderby[menu_order]" value="Default sorting">
<input type="submit" name="orderby[popularity]" value="Sort by popularity">

次に、を使用して値を取得しますkey($_GET['orderby'])(値がまったく存在するか、配列であるかなどの他のチェックの後)


アップデート:

価格でソートした後、私のURLは次のようになります。

http://example.com/folder/?orderby=price&attest=true

純粋な HTML (およびパラメーター処理に対するサーバー側の変更なし) では、パラメーター値を表示値( ) として設定する意思がある場合にのみ、ボタンorderby=priceを使用するときにクエリ文字列で を取得できます。input type=submitvalue=

button代わりに要素に切り替えることができます。

<button type="submit" name="orderby"
  value="price">Sort by price: low to high</button>

ただし、古いブラウザ (特に IE <= 6 だと思います) でのこれのサポートは悪いことに注意してください。

純粋なリンクでは、値attest=trueが (最後のフォーム送信から) 事前にわかっている場合、サーバー側で既に動的に URL に組み込むことができます。

<a href="?orderby=price&attest=true">Sort by price: low to high</a>

(そして、これらのリンクを CSS で「ボタン」のようにフォーマットします。)

ただし、そのようにすると、ユーザーが選択する可能性のある他の追加パラメーターを渡すことができません (フォームが変更/選択する他のオプションも提供している場合)。

さらに何かが必要な場合は、JavaScript を使用するか、サーバー側のパラメーター処理を調整する必要があります (mod_rewrite実際のスクリプト コードを操作したくない場合は、後者を使用して行うことができます)。

于 2013-05-25T17:46:13.403 に答える
0

これが意図したものかどうかはわかりませんが、ユーザーがドロップダウン メニューのオプションをクリックするとすぐにデータを更新したい場合は、次の jquery コードでうまくいきます。

$('.orderby').change(function() {
    var value = $(this).val();

    alert(value);

    /*
    Run ajax here to make a call to a php script that
    takes the value parameter and returns the data in
    the correct order
    */
});
于 2013-05-25T20:09:07.123 に答える