Vous pouvez utiliser jQuery pour trouver l'adresse de l'utilisateur. option
dans toutes les autres listes déroulantes (dans mon exemple, désigné par un certain class
...et peut facilement être changé en un autre sélecteur - je pensais que le sélecteur "select"
était trop large), puis de désactiver l'application réelle de la option
en utilisant .prop("disabled", true)
. Mais c'est un peu plus compliqué que cela, car vous devez garder la trace de la valeur sélectionnée précédemment pour réactiver la liste déroulante lorsqu'une autre valeur est choisie. Voici un exemple qui, nous l'espérons, vous aidera :
http://jsfiddle.net/p5Arj/
$(document).ready(function () {
$(".test").each(function () {
var $self = $(this);
$self.data("previous_value", $self.val());
});
$(".test").on("change", function () {
var $self = $(this);
var prev_value = $self.data("previous_value");
var cur_value = $self.val();
$(".test").not($self).find("option").filter(function () {
return $(this).val() == prev_value;
}).prop("disabled", false);
if (cur_value != "") {
$(".test").not($self).find("option").filter(function () {
return $(this).val() == cur_value;
}).prop("disabled", true);
$self.data("previous_value", cur_value);
}
});
});
Cela désactive donc les mêmes options de toutes les autres listes déroulantes lorsque vous en choisissez une, et fait en sorte que lorsque vous en choisissez une autre, la précédente soit activée dans toutes les autres listes déroulantes. Par exemple, choisissez "3" dans la première liste déroulante... regardez la deuxième liste déroulante - voyez que "3" est désactivé... revenez à la première liste déroulante et choisissez "1"... regardez la deuxième liste déroulante - voyez que "3" est à nouveau activé mais que "1" est désactivé. C'est ce que l'utilisation de .data
est pour dans mon code.
Bien sûr, vous pouvez remplacer l'utilisation de value
con selectedIndex
si vous êtes sûr à 100% que tous les options
sera le même pour chaque select
en question.