2013-08-16 78 views
0

我有得到裝載在第一頁加載4名下拉列表中,他們都看起來有點像這樣:jQuery的選擇多選的麻煩

@Html.LabelFor(m => m.SelectedAgencies, "Agencies") <br /> 
@Html.DropDownListFor(m => m.SelectedAgencies, Model.AllAgencies, new { @class = "chosen-select", multiple = "multiple", style = "width: 350px;" }) 
<button type="submit" id="btnShow" name="show">Show</button> 

點擊按鈕會產生在同一視圖的結果,在下拉列表是一個過濾器。

總新手在JavaScript中,幾乎使這個至今:

<script type="text/javascript"> 
    $(function() { 
     $('.chosen-select').chosen(); 
    }); 
    $(document).ready(function() { 
    if ($('#AllAgenciesSelected').is(':checked')) { 
      $("#SelectedAgencies_chosen").hide(); 
     } 
    $("#AllAgenciesSelected").click(function() { 
      $("#SelectedAgencies_chosen").toggle(!this.checked); 
     }); 
    }); 
</script> 

一切似乎都做工精細,除部分當用戶返回到該頁面。如果在下拉列表中選擇了多個參數,則只有最後一個選擇的頁面在重新加載時保持爲選定狀態。我試圖讓所選擇的值保存的地方和頁面被再次加載後,在人口與保存的結果的下拉列表中選擇:

var agenciesVal; 
    $("#btnShow").click(function() { 
     agenciesVal = $("#SelectedAgencies").value(); 
    }); 

    $(document).ready(function() { 
    //code from before 
    if (agenciesVal!=null) { 
      $('#SelectedAgencies').val = agenciesVal; 
     } 
    }); 

我真的很新的jQuery的,並試圖像這甚至有意義?有沒有更容易,更優雅的方式來實現這一點?

+0

如果你正在做一個實際的*頁面刷新*然後jQuery開發/ JavaScript緩存也正在被清除。你可以嘗試將數據存儲在數據庫或本地存儲中?不過,您的jQuery確實存在一些問題。 – DevlshOne

回答

1

要收集的選項(S):

$(document).ready(function() { 
    var agenciesVal = []; 
    $("#btnShow").click(function() { 
     agenciesVal[] = $.each("#SelectedAgencies option"), function(i, v){ 
      $(this).index(i).attr("selected") == true; 
     }); 
    }); 
}); 

要還原所選選項..

$(document).ready(function() { 
    if (agenciesVal.length != null) { 
     $.each(agenciesVal, function(i, v){ 
      $('#SelectedAgencies option').index(i).attr('selected', true); 
     }); 
    } 
}); 
+0

仍然是相同的結果,但我認爲你的代碼給了我一些方向。 –

0

我認爲他正在做,因爲

<button type="submit"> 

你現在的代碼工作頁面刷新?