javascript - 多个 DropDownLists - 使用 ID 调用单个函数

标签 javascript asp.net drop-down-menu

我有以下代码,它根据选定的单选按钮切换一对 DropDownLists 中的一个的可见性。这段代码有效,但我的问题是我在一个表单上有几组这样的控件。我如何使用单个 JavaScript Toggle() 函数,而不考虑触发它的 RadioButtonList 的 ID?

function Toggle() 
{
    var list = document.getElementById("produceDDL");
    var inputs = list.getElementsByTagName("input");

    var selected;
    for (var i = 0; i < inputs.length; i++) 
    {
        if (inputs[i].checked) 
        {
            selected = inputs[i];
            break;
        }
    }

    if (selected.value == 'Vegetables') 
    {
        div1.style.display = 'none';
        div2.style.display = 'block';
    }
    else 
    {
        div1.style.display = 'block';
        div2.style.display = 'none';
    }
}

    <asp:radiobuttonlist ID="produceDDL" OnClick="javascript:Toggle();" 
        RepeatDirection="Horizontal" runat="server">
        <asp:ListItem Selected="True">Fruit</asp:ListItem>
        <asp:ListItem>Vegetables</asp:ListItem>
    </asp:radiobuttonlist>

    <div id="div1">
        <asp:DropDownList ID="fruitDDL" Width="120" runat="server">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem>Apples</asp:ListItem>
            <asp:ListItem>Oranges</asp:ListItem>
        </asp:DropDownList>
    </div>

    <div id="div2" style="display:none;">
        <asp:DropDownList ID="vegDDL" Width="120" runat="server">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem>Onions</asp:ListItem>
            <asp:ListItem>Potatoes</asp:ListItem>
        </asp:DropDownList>
    </div>

最佳答案

让单选按钮列表将自身作为函数参数传递。

OnClick="javascript:Toggle(this);"

然后就可以替换

function Toggle() 
{
    var list = document.getElementById("produceDDL");
    // ...

通过

function Toggle(list) 
{
    // ...

这样您就可以在其他单选按钮列表中使用 OnClick="javascript:Toggle(this);"


顺便说一句,javascript: 伪协议(protocol)是不必要的,正常的 JavaScript 命名约定是函数名应以小写字母开头。我也会对其进行 sanitizer :)

关于javascript - 多个 DropDownLists - 使用 ID 调用单个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570079/

相关文章:

c# - 如何在 page_load VB.net 之前加载客户端

c# - DropDownList 单击时从选择中删除 "Please select value"?

php - 如果多选下拉列表中的每个项目位于数据库中,如何将其显示为已选择的项目?

javascript - 下拉方向根据可用空间而变化

javascript - 在 ReactJs 中,如何将一个组件的状态传递或检索到另一个组件,以便两个组件都是第三个组件的一部分来划分操作

asp.net - 如何在 ASP.NET 中本地化 App_GlobalResources?

javascript - 具有不同 url 的 Angular.js 动态模板

c# - 如何为 Hangfire 的 mySQL 数据库设置 'connectionString'?

javascript - 使用 AngularJS 按钮显示/隐藏表单的简洁方法

javascript - 如何使用 Lodash 流来组合不同数量的函数?