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");
}
});
})