【问题标题】:How to generate dynamic drop down on page load using jquery?如何使用 jquery 在页面加载时生成动态下拉列表?
【发布时间】:2018-08-13 11:00:22
【问题描述】:

您好,我有五个 html 屏幕,将根据页面下拉菜单中选择的角色导航到页面?

这是我用来生成下拉菜单的代码。

var roleByCatgory = {
            Education: ["Schools", "Colleges"],
            Operations: ["Director", "Controller"],
            Entertainment: ["Music", "dance"]

        }

        function cat(value) {
            if (value.length == 0) document.getElementById("category").innerHTML = "<option></option>";
            else {
                var catOptions = "";
                catOptions += "<option disabled selected>--Select--</option>";
                for (categoryId in roleByCatgory[value]) {
                    catOptions += "<option>" + roleByCatgory[value][categoryId] + "</option>";
                }
                $("#category").html(catOptions);
                var dropdown_role = document.getElementById("category").value;

                $("#category").on('change', function () {

                    if ($("#category").val() == "Schools") {
                        location.href = "school.html";
                    }
                    else if ($("#category").val() == "Colleges") {
                        location.href = "Colleges.html";
                    }
                    else if ($("#category").val() == "Director") {
                        location.href = "Director.html";
                    }
                });
            }
        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-6 col-lg-4  col-lg-offset-2 col-xs-6">
        <!-- modification to be done for dropdown -->
        <select name="Maindropdown" class="form-control dropdown " id="Maindropdown" onchange="cat(this.value);">
            <option value="--" selected>--Select--</option>
            <option value="Education" selected>Education</option>
            <option value="Operations">Operations</option>
            <option value="Entertainment">Entertainment</option>

        </select>

    </div>
    <div class="col-md-4 col-lg-4 col-lg-offset-1 col-xs-12">
        <div class="form-group">
            <div class="input">
                <select name="category" class="form-control dropdown " style="border-radius: 1em;" id="category"></select>
            </div>
        </div>
    </div>

在页面加载时我无法获得第二个下拉值?在页面导航上,我应该能够显示两个下拉值的当前值。

【问题讨论】:

  • 请将您的代码插入到代码 sn-p。
  • 你何时何地调用你的函数 cat(vale) ?
  • @ArjunChoudhary &lt;select name="Maindropdown" class="form-control dropdown" id="Maindropdown" onchange="cat(this.value);"&gt;.

标签: javascript jquery html


【解决方案1】:

@BhavaniSankar 是您想让两个下拉菜单都在屏幕上可见,您需要使用 iframe。

检查一下:

 var roleByCatgory = {
            Education: ["Schools", "Colleges"],
            Operations: ["Director", "Controller"],
            Entertainment: ["Music", "dance"]

        }

        $(document).ready(function () {
            cat($("#Maindropdown").val());
        });


        function cat(value) {
            if (value.length == 0) document.getElementById("category").innerHTML = "<option></option>";
            else {
                var catOptions = "";
                catOptions += "<option disabled selected>--Select--</option>";
                for (categoryId in roleByCatgory[value]) {
                    catOptions += "<option>" + roleByCatgory[value][categoryId] + "</option>";
                }
                $("#category").html(catOptions);
                var dropdown_role = document.getElementById("category").value;

                $("#category").on('change', function () {

                    if ($("#category").val() == "Schools") {
                        $('#iFrame1').attr("src","school.html");
                    }
                    else if ($("#category").val() == "Colleges") {
                        $('#iFrame1').attr("src","Colleges.html");
                    }
                    else if ($("#category").val() == "Director") {
                        $('#iFrame1').attr("src", "Director.html");
                    }
                });
            }
        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-6 col-lg-4  col-lg-offset-2 col-xs-6">
        <!-- modification to be done for dropdown -->
        <select name="Maindropdown" class="form-control dropdown " id="Maindropdown" onchange="cat(this.value);">
            <option value="--" selected>--Select--</option>
            <option value="Education" selected>Education</option>
            <option value="Operations">Operations</option>
            <option value="Entertainment">Entertainment</option>

        </select>

    </div>
    <div class="col-md-4 col-lg-4 col-lg-offset-1 col-xs-12">
        <div class="form-group">
            <div class="input">
                <select name="category" class="form-control dropdown " style="border-radius: 1em;" id="category"></select>
            </div>
        </div>
    </div>

    <iframe id="iFrame1" height="100%" width="100%" style="min-height:300px;border:none"></iframe>

还有另一种解决方案,即使用 jquery ajax 请求加载 html 内容。

【讨论】:

  • 谢谢@saAction。我想在页面加载时加载第二个下拉菜单,但在这里它显示为空更改,只有我可以看到第二个下拉菜单,怎么做?
  • @BhavaniSankar,我已经编辑了代码,应用了 jQuery 就绪函数来检查页面加载时选择的值。
  • 谢谢@saAction。这对我真的很有帮助,谢谢。
  • 该页面没有被定向到另一个 html。我可以在同一页面中看到内容。没有iframe可以吗
  • 是的,可以通过jQuery完成 $("#div1").load("school.html");
【解决方案2】:

这里是使用“load()”函数的jQuery ajax方法

检查一下:

 var roleByCatgory = {
            Education: ["Schools", "Colleges"],
            Operations: ["Director", "Controller"],
            Entertainment: ["Music", "dance"]

        }

        $(document).ready(function () {
            cat($("#Maindropdown").val());
        });


        function cat(value) {
            if (value.length == 0) document.getElementById("category").innerHTML = "<option></option>";
            else {
                var catOptions = "";
                catOptions += "<option disabled selected>--Select--</option>";
                for (categoryId in roleByCatgory[value]) {
                    catOptions += "<option>" + roleByCatgory[value][categoryId] + "</option>";
                }
                $("#category").html(catOptions);
                var dropdown_role = document.getElementById("category").value;

                $("#category").on('change', function () {

                    if ($("#category").val() == "Schools") {
                        $("#div1").load("school.html");
                    }
                    else if ($("#category").val() == "Colleges") {
                        $("#div1").load("Colleges.html");
                    }
                    else if ($("#category").val() == "Director") {
                        $("#div1").load("Director.html");
                    }
                });
            }
        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-6 col-lg-4  col-lg-offset-2 col-xs-6">
        <!-- modification to be done for dropdown -->
        <select name="Maindropdown" class="form-control dropdown " id="Maindropdown" onchange="cat(this.value);">
            <option value="--" selected>--Select--</option>
            <option value="Education">Education</option>
            <option value="Operations">Operations</option>
            <option value="Entertainment">Entertainment</option>

        </select>

    </div>
    <div class="col-md-4 col-lg-4 col-lg-offset-1 col-xs-12">
        <div class="form-group">
            <div class="input">
                <select name="category" class="form-control dropdown " style="border-radius: 1em;" id="category"></select>
            </div>
        </div>
    </div>

    <div id="div1" style="min-height:200px;width:100%;border:solid 1px #c6c6c6"></div>

现在,当您选择下拉列表时,内容正在加载到 div 标签内。

【讨论】:

  • 非常感谢@saAction。你刚刚度过了我的一天……但我还有其他事情要做。我只需要你的帮助。 1.在应用程序第一页的页面加载中不应显示 --select --- 应显示角色。 2.如何使选定的值出现在我尝试过的页面上,但它显示了 --select--- $(("#category").val()).attr("selected","选中");
  • 嗨。 @saAcion .. 现在我可以在没有任何错误的情况下导航,我唯一关心的是当导航到其他页面时如何在类别中显示选定的值?
  • 我们正在使用 jQuery ajax 从另一个页面获取内容,它不会加载整个页面,标题中的两个下拉列表类别和子类别将保持选中状态,我们不会加载整个页面,而是在主页面的'#div1'标签内显示其他页面的内容。
猜你喜欢
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2013-06-08
相关资源
最近更新 更多