删除Select2的最后选择?

时间:2016-07-21 14:30:03

标签: jquery jquery-select2

我想创建一个小功能,阻止用户从多选列表中选择3个以上的项目。 我在网上找到了一些有用的东西,这使我能够在用户选择3个以上的项目时发出警报。但是,我找不到删除最后一个选定项目的方法。

到目前为止,这是我的jQuery:

$('.metiersMission').change(function(event) {
if ($(this).val().length > 3) {
    alert('Vous ne pouvez choisir que 3 métiers');
    $(this).select2('val', '');
}
}});

使用此代码,如果用户选择的项目超过3个,则代码只需删除用户选择的所有内容,这显然不是我想要的。我在任何地方都找不到任何关于此的内容,任何人都有想法?

提前谢谢

2 个答案:

答案 0 :(得分:2)

您可以收听change事件并计算所选选项。如果所选选项为3,则禁用所有其他选项:

$(document).on('change', 'select', function() {
  var that = $(this);
  var val = that.val();
  if (val.length > 2) {
    // Find every unselected option and disable them
    that.find('option').not(':selected').attr('disabled','disabled');
  } else {
    // Enable all options
    that.find('option').removeAttr('disabled');
  }
});
select { width:250px; height:150px }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
  <option value="citroen">Citroen</option>
  <option value="peugeot">Peugeot</option>
</select>

答案 1 :(得分:0)

您可以听取每个孩子的变化,如果选择了3个以上的孩子,则拒绝选择孩子:

$('.metiersMission').children('option').each(
    $(this).change(function(event) {
        if ($(this).parent('select').val().length > 3) {
            alert('Vous ne pouvez choisir que 3 métiers');
            $(this).removeAttr('selected');
        }
    }});
)};