Javascript JQuery引导选择器在('change')集合上选择
我正在尝试根据另一个选择的值禁用和默认选择。当我第一次在choixVarX中选择一个选项(例如Pop)时,Parametersx正是我想要它做的:禁用前两个选项,并默认选择Pascenter和NodeDispersion。但是,当我将choixVarX更改为另一个不触发我想要的行为的参数(例如Propretate),然后再次将其更改为触发我想要的行为的参数(例如FoyersImposes或FoyersFiscaux),第二个参数Sx的行为异常:前两个参数被禁用,但默认情况下未选择Pascenter和NodesVersion。。。有线索吗Javascript JQuery引导选择器在('change')集合上选择,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我正在尝试根据另一个选择的值禁用和默认选择。当我第一次在choixVarX中选择一个选项(例如Pop)时,Parametersx正是我想要它做的:禁用前两个选项,并默认选择Pascenter和NodeDispersion。但是,当我将choixVarX更改为另一个不触发我想要的行为的参数(例如Propretate),然后再次将其更改为触发我想要的行为的参数(例如FoyersImposes或FoyersFiscaux),第二个参数Sx的行为异常:前两个参数被禁用,但默认情况下未选择Pascente
<select class="selectpicker" name="choixVarX" id="choixVarX" size="1" onChange="populateMap('#DDDDC2','#000000',listeComparaison);">
<option value="Pop">Population</option>
<option value="FoyersImposes">Nombre de foyers imposés</option>
<option value="FoyersFiscaux">Nombre de foyers fiscaux</option>
<option value="PropRetraite">Part des retraites dans les revenus</option>
<option value="PropFoyersImposes">Proportion de foyers imposés</option>
<option value="RevMoyen">Revenu moyen</option>
</optgroup>
</select>
<select class="selectpicker" multiple name="parametresX[]" id="parametresX" size="1" data-width="150px" onChange="populateMap('#DDDDC2','#000000',listeComparaison);" data-max-options="3">
<optgroup label="Centrage des données" data-max-options="1" id="centrageX">
<option value="median">Médiane des communes</option>
<option value="moyenne">Moyenne des communes</option>
<option value="pasCentre">Ne pas centrer</option>
</optgroup>
<optgroup label="Dispersion" id="dispersionX" data-max-options="1">
<option value="minmax">Min-Max</option>
<option value="ecarttype">Ecart-type</option>
<option value="noDispersion">Aucun</option>
</optgroup>
<optgroup label="Echelle" id="echelleX" data-max-options="1">
<option value="echelleComplete">Echelle étendue</option>
<option value="echelleAdaptee">Echelle réduite</option>
</optgroup>
</select>
$('#choixVarX').on('change',function(){
if($('#choixVarX').val()=="FoyersImposes" || $('#choixVarX').val()=="FoyersFiscaux" || $('#choixVarX').val()=="Pop"){
$('.selectpicker').selectpicker('refresh');
$('#centrageX option[value="median"]').attr('selected',false);
$('#centrageX option[value="moyenne"]').attr('selected',false);
$('#centrageX option[value="pasCentre"]').attr('selected',true);
$('#dispersionX option[value="minmax"]').attr('selected',false);
$('#dispersionX option[value="ecarttype"]').attr('selected',false);
$('#dispersionX option[value="noDispersion"]').attr('selected',true);
$('#centrageX').attr('disabled',true);
$('#dispersionX').attr('disabled',true);
$('.selectpicker').selectpicker('refresh');
}else{
$('#centrageX').attr('disabled',false);
$('#dispersionX').attr('disabled',false);
$('.selectpicker').selectpicker('refresh');
}
});
我想这对你们来说是一个解决方案,我把你们的属性改为prop insed,并做了一个长if语句的切换。不幸的是,data max options=1不起作用必须至少为data max options=2。因此,希望它能有所帮助,您可以在这里使用JSFIDLE:
您最好提供一个JSFIDLE,这样我们就可以看到问题了!为您修补它这里有一个jsfiddle:。我真的不明白我的问题是从哪里来的!正确的小提琴在这里:就像一个魅力,不管你说什么,它也与数据最大选项=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;
}
});