如何在jquery选择下拉列表框中隐藏值?

时间:2017-01-23 06:56:25

标签: javascript jquery gridview

您好我正在开发一个jquery应用程序,我有一个选择的dropdownlistbox和gridview。 gridview的第一列包含复选框,在顶部它还包含check all按钮。例如,如果我在gridview中检查3行,那么我需要禁用dropdownlistbox中的相应值。我正在尝试如下。 这是从gridview获取所有cheked值的代码。

var checkedValues = [];
        $("#<%=gdvRegretletter.ClientID %> tr").each(function () {
            if($(this).closest('tr').find('input[type="checkbox"]').prop('checked', true))
            {
                checkedValues += $(this).val();
            }
        });

一旦我获得了数组中的值,当我进入下拉列表时,我有下面的代码。

 $('.limitedNumbSelect').change(function (e) {

        $("#limitedNumbSelect > option").each(function () {
         //if (this.value == checkedValues)  If this.value is equal to any value from checkedValues then i want to hide that value inside dropdownlistbox.

            // Here i want to hide all values of checkedValues array(values will be same in dropdownlistbox)
        });
});

我尝试如下。

$('.limitedNumbSelect').change(function (e) {
            var checkedValues = [];
            $("#<%=gdvRegretletter.ClientID %> tr").each(function () {
                 if ($(this).closest('tr').find('input[type="checkbox"]').prop('checked', true)) {
                     checkedValues.push($(this).closest('tr').find('td:eq(2)').text().trim());
                 }
             });
             $(".limitedNumbSelect > option").each(function () {
                 var val = $(this).val();
                 alert(val);
                 var display = checkedValues.indexOf(val) === -1;
                 $(this).toggle(display);
                 $('.limitedNumbSelect option[value=' + display + ']').hide();
                 $(".limitedNumbSelect").find('option:contains(' + display + ')').remove().end().chosen();
             });
        });

在上面的代码中有一个错误。例如,如果我从gridview中选择一个值,那么如果我点击下拉列表,我就可以选择该值(在第一次点击时)。在第二次点击所需的值将隐藏。

以上代码不起作用。数组checkedValues不会捕获值。

我无法弄清楚要在里面写些什么。任何帮助,将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

$('.limitedNumbSelect').change(function (e) {
    $("#limitedNumbSelect > option").each(function () {
        var val = $(this).val();
        var display = checkedValues.indexOf(val) === -1;
        $(this).toggle(display);
    });
});

答案 1 :(得分:0)

替换行:

checkedValues += $(this).val();

在这一行:

checkedValues.push($(this).val());