Javascript 刷新窗口后,下拉列表不会保持选中状态
我有一个下拉列表,如下所示:Javascript 刷新窗口后,下拉列表不会保持选中状态,javascript,jquery,ruby-on-rails,html,Javascript,Jquery,Ruby On Rails,Html,我有一个下拉列表,如下所示: <select class="span2" id ="sort" name= "order_by"> <option >Default</option> <option >Price</option> <option >Color</option> </select> 当我从下拉列表中选择
<select class="span2" id ="sort" name= "order_by">
<option >Default</option>
<option >Price</option>
<option >Color</option>
</select>
当我从下拉列表中选择价格时,价格应保持选中状态,但在刷新窗口后不会发生。我使用的是ruby on rails
我不知道这里发生了什么
有人能指引我吗
感谢您,您必须将值存储在服务器端的任何位置,因此当页面重新呈现时,会根据所选值自动选择值使用Rails select_标记帮助程序而不是javascript
<%= select_tag(:order_by, options_for_select([['Default', 'Default'], ['Price', 'Price'], ['Color', 'Color']], selected: params[:order_by] )) %>
您可以使用以下(Javascript/jQuery解决方案):
请注意:如果您是通过数据库填充的,那么在呈现页面模板时,您应该添加选定的
属性,或者只添加该特定值作为本地存储值。
希望你能明白 在页面加载时,从localstorage获取值并动态添加所选属性。然后在更改选择框时,添加代码以编辑localstorage值。。希望你能理解我的想法。我对jquery和javasrcipt不太熟悉,所以要做到这一点有点困难。你有@RoyMJ的示例代码吗。我试了一下。。使用@rubysti提供的ruby解决方案也尝试了您的解决方案,但我遇到了此错误未初始化常量ActionView::CompiledTemplates::DefaultNow try,因为所有这些都是字符串值,所以放在单引号中
<%= select_tag(:order_by, options_for_select([['Default', 'Default'], ['Price', 'Price'], ['Color', 'Color']], selected: params[:order_by] )) %>
$(document).ready(function(){
var selected_val = localStorage.getItem("sort");
$("#sort").val(selected_val);//This would set the value from local-storage as selected value
$("#sort").change(function(){
var selected = $("#sort").val();
localStorage.setItem("sort", selected);//Setting the selected value in localstorage
$(this).closest('form').trigger('submit');
});
});