2010-08-10 11 views

Répondre

4

Quelque chose comme cela devrait fonctionner:

$(function() { 
    var $selects = $('#select1, #select2, #select3'); 
    $selects.change(function() { 
    // disabled the other two 
    $selects.not(this).attr('disabled', 'disabled'); 
    }); 
}); 


Version mise à jour:

$(function() { 
    var $selects = $('#select1, #select2, #select3'); 
    $selects.change(function() { 
    // disable or enable the other two 
    $selects.not(this).attr('disabled', $(this).val() === '' ? '' : 'disabled'); 
    }); 
}); 
+0

Ceci est très élégant et facile à comprendre. Chacune des listes déroulantes a une option "Aucune sélection". La valeur là-bas est juste "". Si vous voulez que les autres champs redeviennent actifs si "Aucun sélectionné" est sélectionné, comment l'écririez-vous? – Toxid

+0

Ajout d'une version mise à jour qui devrait activer ou désactiver les deux autres en fonction de la valeur actuelle de la sélection qui a déclenché l'événement de changement. Merci de l'acceptation! – jmar777

+0

Tout simplement fantastique! Vous en avez un de trop = bien que, devrait être .val() ==. Je suppose que c'est une faute de frappe. – Toxid

0

Vous pouvez faire quelque chose comme ceci:

$('#wrappers').change(function(){ 
    $('#select1').attr('disabled', true); 
    $('#select2').attr('disabled', true); 
}); 

wrappers est l'id de l'élément de sélection à partir de laquelle lorsque vous choisissez une valeur que les deux autres seront désactivées dont l'id est select1 et select2 respectivement par exemple:

<select id="wrappers">......... 
<select id="select1">......... 
<select id="select2">......... 

Here is working example

0

Je suppose que vous avez trois, et si l'un des trois sont sele cted, les deux autres devraient désactiver.

function toggleOthers(x) { 
var select = new Array('#wrapper1','#wrapper2','#wrapper3'); 

for (int i = 0; i < select.length; i++) 
    if ($(x).attr('id')!=select[i]) 
     $(x).attr('disabled','disable'); 
} 

HTML: <select onchange='toggleOthers(this);' id='wrapper1'> etc...

0

si vous avez les sélectionne avec une enveloppe div un identifiant de #wrapp er

$('#wrapper select').each(function(i,select){ 
    $(select).change(function(){ 
     $(this).attr('class','enabled').siblings().attr('class','disabled'); 
    }) 
})