2016-11-07 120 views
0

當用戶改變我的網頁上的過濾器值,我使用更新的頁面URL堅持重裝後複選框以下:使用查詢字符串

function filterChanged() { 
    window.history.pushState("", document.title, '?' + $("#FiltersForm").serialize()) 
} 

這顯示爲URL的工作就變成了:

http://localhost/?CreatedDate=2016-11-07&StatusFilter=Complete&StatusFilter=Failed 

(注意這是一個MVC項目)

如果我然後刷新頁面使用F5或Enter在地址欄它重新加載和文本/日期輸入和選擇保持它們的值。複選框不。

我是否錯過了某些東西,或者這是必須通過解析查詢字符串手動完成的事情之一?

複選框HTML:

<input type="checkbox" class="StatusFilterCheckBox" data-status-filter="Pending" name="StatusFilter" value="Pending" onchange="filterChanged()"> 
    <input type="checkbox" class="StatusFilterCheckBox" data-status-filter="Failed" name="StatusFilter" value="Failed" onchange="filterChanged()"> 
    <input type="checkbox" class="StatusFilterCheckBox" data-status-filter="Complete" name="StatusFilter" value="Complete" onchange="filterChanged()"> 
+0

最有可能的,因爲它有複選框是否被點擊與否的值。你堅持他們的價值觀,但不是他們的檢查狀態。 –

+0

未選中時,該值不會附加到查詢字符串。我已經找到了如何解析上面的查詢字符串並將複選框設置爲選中狀態,但是如果這適用於文本輸入並選擇它應該適用於文本框,則會出現接縫 – apc

+0

@apc是否將它附加到querysring isn這個問題。你沒有做的是堅持複選框的選中狀態。複選框始終有一個值,即使它們未被檢查。換句話說,當第二頁被加載時,你的查詢字符串中的內容告訴複選框被選中或不被選中?沒有。 –

回答

0

按斯科特·馬庫斯的意見。

jquery .serialize()方法只能串行化值而不是複選框的選中狀態,儘管它只會串行化複選框的值。因此,當頁面重新加載檢查狀態時不會執行。

因此,當文檔加載並設置複選框選中狀態時,需要解析查詢字符串。

的一個很好的例子可以在這裏找到:https://stackoverflow.com/a/11454800/1856451