单击选项卡按钮时,在下拉列表中反复插入相同的名称

时间:2014-03-16 18:14:41

标签: javascript jquery

我在onclick nav tabs event中使用我的功能(当点击任何标签时,下面的功能会激活)。我只是希望没有相同的名字可以两次插入到下拉列表中。下面的功能非常完美。我只需要像name.text != arr[i]那样的检查,以防止它在列表中插入两次相同的名称。任何帮助将不胜感激。

JS:

<script>
$(".nav-tabs li").click
(
    function()
    {
        var getnumber = document.getElementById("permanentno").value;
        var getData = 'methodname=getList&no='+getnumber;
        $.ajax
        ({
            type: 'GET',
            url: 'Dropdown List/List.php',
            data: getData,
            success: function(resp)
            {
                alert(resp); // names for example: mile,stone,
                var arr = resp.split(",");

                var list = $(".dropdownlist");

                var html = "";
                for(var i = 0; i < arr.length; i++)
                {
                    var name = arr[i];
                    if(name.length != 0)
                    {
                        html += "<option value='" + name + "'>";
                        html += name;
                        html += "</option>";
                    }
                }
                $(".dropdownlist").append(html);
            }
        });
    }
);
</script>

2 个答案:

答案 0 :(得分:2)

您可以使用其他数组和IndexOf跟踪名称。请注意,对于IE&lt; 9支持,您需要一个shiv来使用它。

var names = [];
for(var i = 0; i < arr.length; i++)
            {
                var name = arr[i];
                if(name.length != 0 && names.indexOf(name) == -1)
                {
                    html += "<option value='" + name + "'>";
                    html += name;
                    html += "</option>";
                    names.push(name);
                }
            }

答案 1 :(得分:1)

您可以将选项附加到循环上的dropdownlist,并使用jQuery检查重复的名称,如:

var list = $(".dropdownlist");
for (var i = 0; i < arr.length; i++) {
    var name = arr[i];
    if (name.length != 0 && !list.find("option[value='" + name + "']").length) {
        var html = "<option value='" + name + "'>";
        html += name;
        html += "</option>";
        list.append(html);
    }
}