如何将两个选择框中的两个值添加到一个URL跟踪

时间:2018-02-01 08:19:57

标签: javascript jquery html dropdown

以下是两个选择框,我需要的是如果从两个框中选择了值,则两者都应显示在URL中,例如www.example.com#135 +#140

 <select name="search_region" id="search_region" class="search_region">
        <option value="0">All Regions</option>
        <option class="level-0" value="135">HTML</option>
        <option class="level-0" value="136">PHP</option>
        <option class="level-0" value="137">CSS</option>
    </select>

    <select name="search_categories" id="search_categories" class="search_categories">
        <option value="">Select Category</option>   
        <option class="level-0" value="140">Java</option>
        <option class="level-0" value="141">Script</option>
    </select>

以下是我正在运行的脚本,以显示URL中的#search_regions值,到目前为止它完美无缺。现在能够将#search_categories值添加到该值。

<script type="text/javascript">
$(function(){
    $('#search_region').change(function () {
        var url = $(this).val();
        window.location.hash = url;
        console.log('select Changed');
    });
});
window.addEventListener('hashchange', fn, false);

window.onload = fn; // fire on pageload

function fn() {
    $('#search_region').val(window.location.hash.replace('#', ''));
    console.log("hash = " + window.location.hash);
}
 </script>

关于如何做到这一点的任何想法?

这是我之前提出的问题的补充

Getting the select value to display in a new browser

2 个答案:

答案 0 :(得分:0)

在一个步骤中构建您的网址参数,然后在另一个步骤中更新窗口位置。

也就是说,location.hash是用散列开始的任何param,我不知道它将如何处理带有散列的多个param。

答案 1 :(得分:0)

以下是更新网址的一种方法:

$(function() {
  $('#search_region,#search_categories').change(function() {
    console.log(window.location.href + '#' + $('#search_region').val() + '#' + $('#search_categories').val());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="search_region" id="search_region" class="search_region">
        <option value="0">All Regions</option>
        <option class="level-0" value="135">HTML</option>
        <option class="level-0" value="136">PHP</option>
        <option class="level-0" value="137">CSS</option>
    </select>

<select name="search_categories" id="search_categories" class="search_categories">
        <option value="">Select Category</option>   
        <option class="level-0" value="140">Java</option>
        <option class="level-0" value="141">Script</option>
    </select>