在页面重定向后使用所选选项文本更新下拉菜单文本

时间:2015-01-29 07:27:59

标签: javascript jquery html css

您好我想在页面重定向和下载重新加载后使用所选选项文本更新下拉文本。 这是我的代码

<div class="sorting-option">
    <select id="selectdropdown" class="dropdown-select">
        <option value="">Recommended Items</option>
        <option value="?sort1desc=F&sort1=Item_NAME">Name (A-Z)</option>
        <option value="?sort1desc=T&sort1=Item_NAME">Name (Z-A)</option>
        <option value=".f?sort1desc=F&sort1=Item_ONLINECUSTOMERPRICE">Price (Low- 
High)   
        </option>
        <option value=".f?sort1desc=T&sort1=Item_ONLINECUSTOMERPRICE">Price (High 
Low) 
        </option>
    </select>
</div>

当我从此下拉列表中选择任何选项时,它会加载页面并打开该选项的值部分中的链接。 每次页面加载后,我只看到推荐的项目选项文本,而不是我从下拉列表中选择的文本。就像我选择名称(Z-A)一样,它应该在页面加载后的下拉列表中更新为名称(Z-A)。

到目前为止,我已尝试过此代码,但它没有给我预期的结果

$(document).ready(function () {
        $('#selectdropdown').change(function () {
            location.href = $(this).val();
            $("#selectdropdown option:selected").text();
        });
    });

4 个答案:

答案 0 :(得分:0)

您可以使用localStorage.getItem()localStorage.setItem();保存所选值,然后在就绪函数中重新选择该值。

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage#localStorage

$(document).ready(function() {
    var opt = document.querySelector('#selectdropdown option[value="' + localStorage.getItem('selectdropdownselectedvalue') + '"]');
    if (opt) opt.selected = true;

    $('#selectdropdown').change(function() {
        localStorage.setItem('selectdropdownselectedvalue', document.querySelector('#selectdropdown').value);

        location.href = $(this).val(); //instant redirect
        //$( "#selectdropdown option:selected" ).text(); <-- not possible because js is already about to redirecting
    });
});

工作示例(没有jquery):

<select id="selectdropdown" onchange="changed(this)">
    <option>nothing</option>
    <option value="2">2</option>
    <option value="4">4</option>
    <option value="6">6</option>
    <option value="8">8</option>
</select>
<script>
    var opt = document.querySelector('#selectdropdown option[value="' + localStorage.getItem('selectdropdownselectedvalue') + '"]');
    if (opt) {
        opt.selected = true;
    }

    function changed(dd) {
        localStorage.setItem('selectdropdownselectedvalue', document.querySelector('#selectdropdown').value);
        window.location = location.href;
    }
</script>

答案 1 :(得分:0)

您可以在<select>的选项中使用所选属性。 将name属性放在select中,当您提交表单时,在页面加载后获取相同的内容,然后放置一个条件,然后选择该项。

<if selectdropdown = "sort1desc=F&sort1=Item_NAME"> selected<endif>

喜欢:

<div class="sorting-option">
    <select id="selectdropdown" class="dropdown-select" name= "selectdropdown">
        <option value="">Recommended Items</option>
        <option value="?sort1desc=F&sort1=Item_NAME" <if selectdropdown = "sort1desc=F&sort1=Item_NAME"> selected<endif> >Name (A-Z)</option>
        <option value="?sort1desc=T&sort1=Item_NAME">Name (Z-A)</option>
    </select>
</div>

为所有选项添加相同内容。

答案 2 :(得分:0)

您可以按照以下步骤操作。

  1. 将所选值传递到网址。

  2. 当页面加载时,您可以从URL中检查这些值,以使值自动选中。

  3. &#13;
    &#13;
    $(document).ready(function() {
      $("#social").change(function(event) {
        var target_url = $(this).val();
        //pass the target url in the url scope
        var redirect_url = target_url + "?social=" + target_url;
        location.href = redirect_url;
      });
    
      //on page load get the url values to select it from dropdown.
      var urlvars = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
      var keys = urlvars[0].split('=');
      var default_select = keys[1];
      $('#social').val(default_select);
    
    });
    &#13;
    <form>
      <select id="social">
        <option value="http://localhost/index.cfm">Default</option>
        <option value="http://localhost/a.cfm">Google</option>
        <option value="http://localhost/b.cfm">Facebook</option>
      </select>
    </form>
    &#13;
    &#13;
    &#13;

答案 3 :(得分:0)

您可以检查sort1desc的url参数并将值指定给选择框。这是jquery代码。

$(document).ready(function () {
    var sortParam = getUrlParameter("sort1desc");
    alert(sortParam);
    $('#selectdropdown option').each(function() {
        var str = $(this).attr('value');
        if(str.indexOf("sort1desc="+sortParam) >= 0) {
            $('#selectdropdown').val($(this).attr('value'));
        }
    });
    $('#selectdropdown').change(function () {
        location.href = $(this).val();
        $("#selectdropdown option:selected").text();
    });
});
function getUrlParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
        {
            return sParameterName[1];
        }
    }
}