1

假设我在这样的 jquery 移动解决方案中有多个选择对话框:

     <select name="fruitFilter" id=fruitFilter" multiple="multiple" data-native-menu="false">
          <option>Fruit choice</option>
          <option value="1">Choice1</option>
          <option value="2">Choice2</option>
          <option value="3">Choice3</option>
          <option value="4">Choice4</option>
          <option value="1234">All Fruits</option>
        </select>

我希望选择 1-4 可以单独选择,但是如果我选中“所有水果”,我希望所有选择都被标记(禁用为正确)并且未选中取消选择“所有水果”然后可以选择 1-4再次。

到目前为止,我已经完成了所有工作和加载/保存到本地存储,除了禁用/启用所有/单独的能力

任何人都知道如何做到这一点?

4

1 回答 1

0

大概是这样的吧?

var selAllValue = "1234",
    $fruitSelect = $('#fruitFilter'),
    $allOptions = $fruitSelect.children(), //get all options
    $selAllOption = $allOptions.filter('[value="' + selAllValue + '"]'); //Get the check all option

$fruitSelect.on('change', function () {
    var $this     = $(this),
        currSel   = ($this.val() || []).pop(), //get the last selected value.
        $options  = $allOptions, 
        flg       = (currSel === selAllValue);

    if (flg) { //if it is equal to alloption
       $options = $options.not($selAllOption).prop('selected', false); //unselect others and set $options to the new list
    }

    $options.prop('disabled', flg); //finally set the disable flag on $options. i.e disable flag will be set if current selection is alloption else just not disable all.

    $this.selectmenu('refresh'); //refresh select menu to take effect.

});

演示

于 2013-11-13T20:51:12.037 回答