如何从用户选择的动态下拉列表生成动态URL?

时间:2016-09-25 19:59:34

标签: jquery json dynamic drop-down-menu dynamic-url

我正在使用JSON创建一个包含两个列表的动态下拉列表。另外,我有第三个下拉列表,它不是动态的。

当用户点击“提交”按钮时,它应根据三个下拉列表中的选定值触发动态创建的URL。

例如,用户选择“挪威”,“奥斯陆”和“全明星”,点击“提交”按钮应打开“norway_oslo_allstars.html”

下拉列表中的两个(第1个和第3个)在OPTION标记中具有VALUE属性,我假设它可以用于生成动态创建的URL - 但第二个下拉列表是从JSON文件创建的,并且因此条目没有VALUE属性。

还有办法根据用户的选择动态创建URL吗?

请参阅http://jazzkatt.net/dynamic/例如。

这是我的动态下拉列表和JSON代码:

<script>

$(document).ready(function(){

    $("#json-one").change(function() {

        var $dropdown = $(this);

        $.getJSON("jsondata/data.json", function(data) {

            var key = $dropdown.val();
            var vals = [];

            switch(key) {
                case 'norway':
                    vals = data.norway.split(",");
                    break;
                case 'usa':
                    vals = data.usa.split(",");
                    break;
                case 'denmark':
                    vals = data.denmark.split(",");
            }

            var $jsontwo = $("#json-two");
            $jsontwo.empty();
            $.each(vals, function(index, value) {
                $jsontwo.append("<option>" + value + "</option>");
            });

        });
    });
    $("#json-one").trigger('change');
});
</script>

这是我的HTML,其中包含两个动态下拉列表和第三个(非动态)下拉列表:

<form action="" method="get" id="form1">

<select id="json-one">
    <option selected value="norway">Norway</option>
    <option value="usa">USA</option>
    <option value="denmark">Denmark</option>
</select>

<br />

<select id="json-two">

</select>

<br />

<select id="stars">
<option value="allstars">All stars</option>
<option value="onestar">One star</option>
<option value="twostars">Two stars</option>
<option value="threestars">Three stars</option>
</select>

</form>
<p>

<button type="submit" form="form1" value="Submit">Submit</button>

这是我目前正在使用的JSON格式... 是否可以为每个条目添加某种VALUE属性,可用于创建URL?

{
    "norway": "Oslo,Bergen,Stavanger",
    "usa": "New York,Chicago,Dallas",
    "denmark": "Copenhagen,Aalborg,Odense"
}

1 个答案:

答案 0 :(得分:1)

首先,您可以将VALUE添加到第二个选项json-two

您只需要在循环所有vals的地方更改JS代码,如下所示。

$.each(vals, function(index, value) { $jsontwo.append("<option value='"+value+"'>" + value + "</option>"); });

其次,您不需要对脚本进行任何更改。您可以使用以下脚本生成URL。

jQuery( "button[type='submit']" ).click(function(e) {
 e.preventDefault()
 var var1 = $('#json-one').val()
 var var2 = $('#json-two').val().toLowerCase().replace(/ /g,"")
 var var3 = $('#stars').val()

 var link = var1+"_"+var2+"_"+var3+".html"
 console.log(link)
});