简体   繁体   English

动态添加下拉菜单并排除所选选项

[英]Dynamically add dropdown menus and exclude selected options

As I mentioned in the title, I'm trying to build dynamic dropdown menus. 如标题中所述,我正在尝试构建动态下拉菜单。 Once user chooses from list option, the same option is excluded (disabled) from other dropdowns. 用户从列表选项中选择后,其他下拉菜单中将排除(禁用)相同的选项。

So far I have built Add/Remove functionality. 到目前为止,我已经建立了添加/删除功能。 But I have no clue where to start with this problem with disabling selected options. 但是我不知道从哪里开始禁用这个选择的选项。

Here's jsfiddle link 这是jsfiddle链接

   $('.multi-field-wrapper').each(function() {
    var $wrapper = $('.multi-fields', this);
    $(".add-field", $(this)).click(function(e) {
        $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
    });




    $('.multi-field .remove-field', $wrapper).click(function() {
        if ($('.multi-field', $wrapper).length > 1)
            $(this).parent('.multi-field').remove();
    });
});

var defaultTime = "<option selected disabled>Choose time</option><option>Whole day</option>";
var i, b, a, clock = "";
var min = ["00", "15", "30", "45"];

for(a = 0; a <= 1; a++){
    if(a == 0){
        for (i = 0; i <= 11; i++) {
            if(i <= 9) {
                for (b = 0; b < min.length; b++) {
                    clock += "<option>" + "0" + i + ":" + min[b] + " AM" + "</option>";
                }
            }else{
                for (b = 0; b < min.length; b++) {
                    clock += "<option>" + i + ":" + min[b] + " AM" + "</option>";
                }
            }
        }
    }else{
        for (i = 0; i <= 11; i++) {
            if(i <= 9) {
                for (b = 0; b < min.length; b++) {
                    clock += "<option>" + "0" + i + ":" + min[b] + " PM" + "</option>";
                }
            }else{
                for (b = 0; b < min.length; b++) {
                    clock += "<option>" + i + ":" + min[b] + " PM" + "</option>";
                }
            }
        }
    }
}

document.getElementById("clock").innerHTML = defaultTime + clock;

Any idea where should I start? 知道我应该从哪里开始吗? Any help would be helpful. 任何帮助都会有所帮助。

Thank You! 谢谢!

You have to make object of selected options as: 您必须将选定选项的对象设置为:

        var foo = []; 
          $('.times :selected').each(function(i, selected){ 
          foo[i] = $(selected).text(); 
        });

After this just set option disable with values which are in foo object 之后,只需设置选项,禁用foo对象中的值

        $.each(foo, function(entry){
            console.log(foo[entry]);
            $(".times option:contains('"+foo[entry]+"')").attr("disabled","disabled");
        });

Fiddle Link: https://jsfiddle.net/k4do7Lg2/1/ 小提琴链接: https : //jsfiddle.net/k4do7Lg2/1/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM