2012-12-03 42 views
0

我使用YII,並且我有一個複選框過濾器,可按品牌過濾產品。產品清單通過未啓用Javascript的複選框過濾

這是我的過濾器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調用控制器/動作(在我的情況下,控制器是產品,動作是列表),參數$品牌被傳遞給控制器​​/動作。

這是我的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可以只在一個品牌下過濾產品列表(如果未啓用JavaScript),那也是可以接受的。

回答

0

如果你不想使用JavaScript,你可以做的是創造一個

<noscript>Please enable javascript</noscript>

或選中複選框後,在頁面刷新和做的元素的顯示/隱藏與你的PHP。

+0

這不是我的情況。我希望用戶允許在沒有Javascript的情況下使用我的頁面。我需要一個運行時沒有Javascript的頁面來獲得更好的搜索引擎優化(我需要谷歌找到按品牌過濾產品的可能性,至少我認爲這是必要的)。當複選框選擇並記住所檢查的內容(無javascript)時,如何刷新頁面? – renathy

+0

這不是SEO的工作原理。你應該研究SEO。幾乎所有的網站都使用JS並擁有良好的SEO。您將需要他們單擊提交按鈕將表單提交給PHP,或者使用javascript作爲onClick事件來提交表單。 – Bot

+0

Oups。我的意思是這個複選框過濾器更新是由Ajax完成的,Ajax通常不是SEO友好的...所以我可能會使用javascript onClick作爲複選框。 – renathy

1

什麼我建議是到表單中附上過濾器和HTML表單的操作設置爲您用於AJAX過濾器同樣的動作。

如果你正在考慮SEO,那麼你的表格應提交使用GET方法,然後你可以使用Yii的要求對象:

Yii::app()->request->isPostRequest

,以確定它是否是一個的被處理的AJAX請求或非腳本版本。

你可以附上的表格過濾器一對夫婦的標籤內提交按鈕。

至於知道什麼重新加載頁面之前,選擇複選框,我不能完全肯定這是沒有可能的JavaScript。