【问题标题】:Displaying two seperate select box values in a URL在 URL 中显示两个单独的选择框值
【发布时间】:2026-01-06 12:30:03
【问题描述】:

这里是两个选择框,我需要的是如果从两个框中都选择了值,两者都应该显示在 URL 中,像这样 例如 www.example.com#135+#140www.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

【问题讨论】:

    标签: javascript jquery html select parameters


    【解决方案1】:

    1.您需要同时应用两个选择框的更改事件。

    2.您需要将第二个选择框值添加到window.location.hashalso。

    工作 sn-p:-

    $(function(){
       var url = '';
        $('#search_region').change(function () {
            url = $(this).val();
            window.location.hash = url;
             console.log(window.location.hash);
        });
        $('#search_categories').change(function () {
           if(url !==''){
             window.location.hash = url+"&"+$(this).val();
           }
            console.log(window.location.hash);
        });
    });
    
    window.addEventListener('hashchange', fn, false);
    
    window.onload = fn; // fire on pageload
    
    function fn() {
        console.log("hash = " + window.location.hash);
    }
    <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>

    【讨论】:

    • hashchange addEventListener 还能用这个吗??
    • @zuh 是的,它会的。我已经添加了
    • 由于某种原因,这些值在复制到新的浏览器窗口时不成立,不应该将 id 与事件侦听器一起添加吗?
    • @zuh 您可以根据自己的要求添加。试试看
    • 我所有的尝试都失败了,不知道如何正确地做到这一点
    最近更新 更多