我正在使用 YII,并且我有一个按品牌过滤产品的复选框过滤器。
这是我的过滤器 HTML:
<dl class="brand-filter">
<dd class="cat-text">
<input value="1" id="chb_1" class="brand-filter-chb" type="checkbox" name="brands[]">
<label for="chb_1" class="brand-filter-text" style=" display: inline-block;">Brand Name 1</label>
</dd>
<dd class="cat-text">
<input value="2" id="chb_2" class="brand-filter-chb" type="checkbox" name="brands[]">
<label for="chb_2" class="brand-filter-text" style=" display: inline-block;">BRAND Name 2 </label>
</dd>
etc.
</dl>
当用户单击复选框时,jquery 会执行 YII fn.yiiListView.update。这类似于更新我正在过滤的数据的 ajax 调用。对控制器/动作进行 Ajax 调用(在我的例子中,控制器是产品,动作是列表),参数 $brands 被传递给控制器/动作。
这是我的过滤器 javascript (Jquery):
$('.brand-filter-chb').live('click', function(){
brands = $('#filter-form').serialize(); //brand names are serialized
$.fn.yiiListView.update( //this updates product list by brand names
'product-list', //id of product list table
{data: brands} //serialized data send to controller/action by ajax call
);
});
这允许按品牌过滤产品列表。使用检查品牌名称复选框并过滤列表。用户还可以检查多个品牌名称,一切正常。但是,如果没有 Javascript,它就无法工作。
我想知道在没有 javascript 的情况下允许相同或非常相似的用户体验的最佳解决方案是什么。例如,如果未启用 javascript,用户可以仅按一个品牌过滤产品列表也是可以接受的。