选中JQuery Bootstrap selectpicker on('change')设置

时间:2015-11-16 07:39:23

标签: javascript jquery twitter-bootstrap

我正在尝试根据另一个选择的值禁用和默认选择<select>。当我第一次在<select> choixVarX中选择一个选项(例如“Pop”)时,<select>参数执行完全符合我的要求:禁用前两个<optgroup>和默认选择“pasCentre “和”noDispersion“。但是,当我将choixVarX更改为另一个不触发我想要的行为(例如“PropRetraite”)然后再将其更改为触发我想要的行为(例如“FoyersImposes”或“FoyersFiscaux”)时,第二个{{1} } parametresX表现得很奇怪:第一个<select>被禁用,但“pasCentre”和“noDispersion”不是默认选择的...任何线索?

<optgroup>

1 个答案:

答案 0 :(得分:0)

我认为这对你来说是一个解决方案,我把你的attr更改为prop insed并做了一个转换浪费了很长的if-statment。不幸的是,data-max-options =“1”不起作用必须至少为data-max-options =“2”。所以希望它有所帮助,你可以在这里找到jsfiddle:https://jsfiddle.net/txy4teks/1/

$('#choixVarX').on('change', function () {
    switch ($(this).val()) {
        case 'Pop':
        case 'FoyersImposes':
        case 'FoyersFiscaux':
            $('#centrageX option[value="median"]').prop('selected', false);
            $('#centrageX option[value="moyenne"]').prop('selected', false);
            $('#centrageX option[value="pasCentre"]').prop('selected', true);
            $('#dispersionX option[value="minmax"]').prop('selected', false);
            $('#dispersionX option[value="ecarttype"]').prop('selected', false);
            $('#dispersionX option[value="noDispersion"]').prop('selected', true);
            $('#centrageX').prop('disabled', true);
            $('#dispersionX').prop('disabled', true);
            $('.selectpicker').selectpicker('refresh');
            break;    
        case 'PropRetraite':
        case 'PropFoyersImposes':
        case 'RevMoyen':
            $('#centrageX').prop('disabled', false);
            $('#dispersionX').prop('disabled', false);
            $('.selectpicker').selectpicker('refresh');
            break;
    }
});