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'])(在其他检查之后,例如该值是否存在,它是一个数组等)


更新:

按价格排序后,我的网址应该是这样的:

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

使用纯 HTML(并且没有对参数处理进行服务器端更改),您只能orderby=price在使用input type=submit按钮时在查询字符串中获取 ,当您也愿意将参数值设置为显示值( value=) 时。

您可以改为切换到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 回答