2013-08-16 31 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"> 

你现在的代码工作页面刷新?