Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在多个选择中,使选定选项成为uniq_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 在多个选择中,使选定选项成为uniq

Javascript 在多个选择中,使选定选项成为uniq,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有个问题,你需要在哪里找到俄语和英语的成对单词 我认为问题在于操作顺序 $(".q4EN").find("select").change(function () { $(".q4EN").find("select") //Finds all select lists .not(this) //Finds all except the one just changed .find("option:selected") //Fi

我有个问题,你需要在哪里找到俄语和英语的成对单词


我认为问题在于操作顺序

$(".q4EN").find("select").change(function () {
    $(".q4EN").find("select")   //Finds all select lists
    .not(this)                  //Finds all except the one just changed
    .find("option:selected")    //Finds selected of all except the one just changed
    .addClass("nonSelectable"); //Wont do anything because nothing was selected
});
请尝试以下操作:

    $(".q4EN").find("select").change(function() {UpdateOptions();});

    function UpdateOptions(){
        var ss = $(".q4EN").find("select");
        ss.find('option').prop("disabled", false); //Enable all before disabling selected
        ss.each(function () {
            var s = $(this).val();
            if(s != undefined && s != "") {
                ss.find("option[value=" + s + "]").prop("disabled", true);
            }
        });
    }

这是实现您需要的另一种方法。它基本上遍历每个select元素,找到相应的选项并禁用它

$('select').find("option").addClass("selectable");

$('select').on("change",function()
{
   // $(this).find("option").prop("disabled",false); // uncomment this if you wish to reset the disabled selection
    var $thisId = this.id;
    var $selectedOption = $(this).find("option:selected").val();
    $('select').each(function()
    {
        if(this.id !== $thisId)
        {
          //  $(this).find("option").removeClass("non-selectable").addClass("selectable"); // uncomment this if you wish to reset the disabled selection
            $(this).find("option[value=" + $selectedOption + "]").prop("disabled",true).addClass("non-selectable").removeClass("selectable");

        }
    });    
})


要针对特定组(如EN和RU),请将
$('select')
更改为
$('.q4EN select')

,对于此选择,当用户在该块中的所有剩余选择中选择例如.q4EN块中的“红色”时,我希望此选择选项变为不可选择(不可选择是css中的类,显示:none)当用户更改决定并选择“绿色”而不是“红色”时,红色变为可用且绿色不可选择???@void我希望所有3个选择同时使用不同的值。请详细说明并简化操作中的问题陈述。以下任何答案是否解决了您的问题?@void我选择了答案这是我的错误)但它只在第二次更改时起作用,而删除选项只在以前的选择中起作用,我认为这是因为第一次更改时选择的项目为空选择它起作用,但当用户更改决定时,他无法选择所有3种颜色,例如,如果我先选择红色,然后选择绿色,然后选择紫色,在剩下的2中,我不能选择任何东西。这几乎是可行的,但如果我在第一个选择中选择,在第三个选择中选择,那么在第二个选择中,我可以选择2个值,而不是一个奇数(参见小提琴上的奇数),从逻辑上讲,它应该可以正常工作@Dinmyte的解决方案对我不起作用。如果选择第一行中的所有选项,则其他选项中不会启用任何选项。在fiddle中,我可以先选择红色,然后选择绿色,再选择红色,但所有3个选项一次必须不同,因此,如果选择红色和绿色,则只会更新紫色代码,以反映必要的更改。跟随评论
    $(".q4EN").find("select").change(function() {UpdateOptions();});

    function UpdateOptions(){
        var ss = $(".q4EN").find("select");
        ss.find('option').prop("disabled", false); //Enable all before disabling selected
        ss.each(function () {
            var s = $(this).val();
            if(s != undefined && s != "") {
                ss.find("option[value=" + s + "]").prop("disabled", true);
            }
        });
    }
$('select').find("option").addClass("selectable");

$('select').on("change",function()
{
   // $(this).find("option").prop("disabled",false); // uncomment this if you wish to reset the disabled selection
    var $thisId = this.id;
    var $selectedOption = $(this).find("option:selected").val();
    $('select').each(function()
    {
        if(this.id !== $thisId)
        {
          //  $(this).find("option").removeClass("non-selectable").addClass("selectable"); // uncomment this if you wish to reset the disabled selection
            $(this).find("option[value=" + $selectedOption + "]").prop("disabled",true).addClass("non-selectable").removeClass("selectable");

        }
    });    
})