如何刷新选择了相同选择的页面? (玉/ HTML)

时间:2015-10-27 20:23:58

标签: javascript jquery html pug

我正在使用Jade在网页上创建下拉列表。我想让这个网页在选择一个项目时不断重新加载(可能在一定的时间间隔内),但是我想让它重新加载时仍然选择相同的选项。

使用meta之类的东西(http-equiv ='refresh',content ='30')可能对我有用,但它只会每30秒重新加载一次原始页面,但不会在列表中重新加载包含所选项目的页面地选择。

这是我的代码:

select(id="foo", multiple="2", size=listStuff.length)
    each val in listStuff
    option(value=val)=val

script.
 $('#foo').on('change', function(context) {

        //insert what the selection displays when changed
   });

我知道我正在使用玉,但欢迎任何HTML体验,因为我可以在两种语言之间进行转换。

2 个答案:

答案 0 :(得分:0)

因此您需要在刷新后选择保留选项。您有几个选项,使用会话/本地存储API或将其设置为cookie。

使用会话存储:

$('#foo').on('change', function(context) {
    sessionStorage.setItem("foo", $("#foo").val());
});

然后在页面加载

$('#foo').val(sessionStorage.getItem("foo"));

如果在cookie上,你会使用像(jQuery cookie)

这样的东西
$.cookie("foo",  $("#foo").val());

答案 1 :(得分:0)

以下是使用URL中的查询字符串的示例 我使用id元素的select作为查询字符串名称。

window.addEventListener('load', initPage, false);

var elSelect;  // select element

function initPage(sender) {
    var selectionValue;  // selection from url

    // get select, set value, refresh page in 30 seconds
    elSelect = document.getElementById('foo');
    selectionValue = getQueryString(elSelect.id);
    if (selectionValue) {
        elSelect.value = selectionValue;
    }
    setTimeout(refreshPage, 30000);
}

function refreshPage(sender) {
    var newUrl;  // url to load

    // set new query portion, reload
    newUrl = "?" + elSelect.id + "=" + elSelect.value;
    window.location.href = window.location.href.split('?')[0] + newUrl;
}

// get query string value by name
function getQueryString(sParm) {
    var asParms;  // query String parameters array

    var sLocation;  // location URL
    var sParmName;  // parameter name
    var sParmVal;   // parameter value

    // return false if not found
    sParmVal = false;

    // split query portion of url, look for sParm name
    sLocation = location.search.substring(1, location.search.length);
    asParms = sLocation.split("&");
    for (var i = 0; i < asParms.length; i++) {
        sParmName = asParms[i].substring(0,asParms[i].indexOf("="));
        if (sParmName === sParm) {
            sParmVal = asParms[i].substring(asParms[i].indexOf("=") + 1)
        }
    }

    return sParmVal;
}

<select id="foo">
  <option value="1" selected>fe</option>
  <option value="2">fi</option>
  <option value="3">fo</option>
</select>