从“多选项”中选择一个选项后,将它从其他选择中移除(并反之亦然)

5

I have 3 multiple selects like:

<select multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
</select>

<select multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
</select>

<select multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
</select>

我希望你能提供最佳解决方案。期望的行为是当您在一个多选框中选择一个项目时,然后将其从其他多选框中删除(反之亦然)。

我使用jquery Chosen插件。

情况:您有3个角色,但用户只能有一个角色。

jsFiddle

1个回答

1
基本上您想通过JS / jQuery删除选项并更新插件。 这里是一些代码。
  $(".chzn-select").change(function(){   
    $(".chzn-select")   
    .not($(this))  
    .find("option[value="+$(this).val()+"]")   
    .remove();   
    $(".chzn-select").trigger("liszt:updated");   
   });

并且有一个小提琴链接 JsFiddle

EDIT: try this new fiddle it handles multiple select

$(".chzn-select").css('width', '300px').chosen({
        display_selected_options: false,
        no_results_text: 'not found',
    }).change(function(){
        var me = $(this);
        $(".chzn-container .search-choice").each(function(){
            var text = $('span',this).text();
            $(".chzn-select")
            .not(me)
            .find("option").each(function(){
               if ($(this).text() == text) $(this).prop('disabled',true);
            });
        });
        $(".chzn-select").trigger("liszt:updated");
});

编辑:
尝试这个: JsFiddle 看看它是否适合你… :)


嗯...你仍然可以在多选中选择一个以上的项目 http://d.pr/i/lSUl - Vojtech Lacina
你确定吗?你使用了最新的链接吗? - JDuarteDJ
你是对的,由于某些原因最新版本没有保存。现在再试一下。它会在任何地方选择后禁用该选项。 - JDuarteDJ
你好,还有一个bug。当你向选择框中添加一些选项后,无法将其删除。缺少[X]按钮。我认为问题在于.search-choice没有<a class="search-choice-close" data-option-array-index="4"></a>(http://d.pr/i/kHMv),如何解决? - Vojtech Lacina
这取决于文本,因为验证元素是否已存在的信息在文本上而不是值上(它是一个<span>元素)。我仍然不知道为什么“x”被删除了。 - JDuarteDJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,