【问题标题】:How to display only one item each of multiple items in a dropdown如何在下拉列表中仅显示多个项目中的一个项目
【发布时间】:2021-02-19 10:55:38
【问题描述】:

我有一张桌子,里面摆满了物品:船只名称、集装箱编号、货物类型等。 我必须制作一个带有搜索功能的下拉菜单。在这个下拉菜单中,我只想显示多个相似值中的一项(因为一艘船可能会出现不止一次)。 我的问题是我真的不知道该怎么做。我是否必须使用 JavaScript 来缩小范围或在 asp.net Core 中使用不同的方法?我有点迷路了..

<table class="plain" width="100%">
    <tbody>
        <tr class="plain">
            <td class="plain" width="100%">
                <input type="submit" name="aktie" value="Goods" class="header_button" />
            </td>
            <td>class="plain">
                <input type="button" value="⏷" class="dropbtn" onclick="myDropdown(3)">
                <div id="myDropdown3" class="dropdown-content">
                    <input onshow="focus()" onclick="event.stopPropagation()" type="text" placeholder="Search.." id="myInput3" class="myInput" onkeyup="filterFunction(3)" onkeydown="inputEvent(3,event)">
                    <div onclick="SelectValue('Vessel', '')">- All Vessels-</div>
                    @*this is the main issue. I display every item.*@
                    @foreach (var item in ViewData["Columns"] as IEnumerable<Project.Models.Folder.ClassName>)
                    {
                        <div onclick="SelectValue('Goods',@item.Goods)">@item.Goods</div>
                    }
                </div>
            </td>
        <tr>
    <tbody>
</table>

这些是我制作的一些 JavaScript 函数。

myDropdown() 将“显示”放在下拉内容后面,使其出现。

filterFunction() 将 'style="none" 放在搜索栏中没有字母的项目后面

inputEvent() 允许您使用箭头键在项目之间导航。

SelectValue() 允许您单击列表中的一项并在表格中对其进行过滤。

【问题讨论】:

    标签: javascript c# asp.net-core


    【解决方案1】:

    如果我正确理解您的问题,您需要一个没有重复值的下拉菜单。您可以简单地将数组传递给 JavaScript 函数以消除重复项,最后在下拉列表中使用它。

    这是一个删除重复项的函数示例:

    function removeDuplicates() {
        var cars = ["bmw", "audi", "tesla", "audi", "bmw"];
        var cars_without_duplicates = cars.filter( function( item, index, inputArray ) {
               return inputArray.indexOf(item) == index;
        });
        console.log(cars_without_duplicates); // Your console window shows the answer for this example: ["bmw","audi,"tesla"]
    }
    

    注意:有多种方法可以删除重复项,您可以选择任意一种。

    【讨论】:

    • 所以如果我想让过滤器工作,我必须把我的物品放在'var cars'中这么说?
    • 例如,var cars 只是硬编码。一旦获得这些项目(例如从数据库中),您就必须将原始项目数组传递给该函数。最后,您可以使用变量“cars_without_duplicates”来填充您的下拉菜单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多