Ich habe zwei Dropdown-Listen. Jeder enthält die gleiche Liste von Zeiten. Wenn eine Zeit in der Liste "A" ausgewählt ist, möchte ich dieselben und alle früheren Zeiten in der Liste "B" deaktivieren.JQuery Disabled Dropdown-Optionen basierend auf der Auswahl von einem anderen
List A List B
------ ------
06:00 AM 06:00 AM
07:00 AM 07:00 AM
08:00 AM 08:00 AM
... ...
Also, wenn jemand auf etwa 07.00 Uhr in der Liste „A“ klickt, die Zeit und vor in Liste „B“ würde deaktiviert werden.
$('#listA').on('change', function(){
...
});
+1 für wirtschaftliche Codierung.
UPDATE
landete ich dies bis zu tun, die es in beide Richtungen fängt:
function setDisableOptions(from, to) {
$(document.body).on('change', '[name="' + from + '"]', function() {
var s = $(this).prop('selectedIndex') + 1;
var l = $('[name="' + from + '"] option').length;
$(this).find('option').prop('disabled', false);
for (var i = 0; i <= l; i++) {
if (i <= s) {
$('[name="' + to + '"] > option:nth-child(' + i + ')').attr('disabled', 'disabled');
} else {
$('[name="' + to + '"] > option:nth-child(' + i + ')').removeAttr('disabled');
}
}
});
$(document.body).on('change', '[name="' + to + '"]', function() {
var s = $(this).prop('selectedIndex') + 1;
var l = $('[name="' + to + '"] option').length;
$(this).find('option').prop('disabled', false);
for (var i = 0; i <= l; i++) {
if (i >= s) {
$('[name="' + from + '"] > option:nth-child(' + i + ')').attr('disabled', 'disabled');
} else {
$('[name="' + from + '"] > option:nth-child(' + i + ')').removeAttr('disabled');
}
}
});
};
, die wie genannt wird:
setDisableOptions('fromInputName', 'toInputName');
ich den richtigen Indexwert muß im e.sibling Referenz zurückgegeben. Ich denke nicht this.index() funktioniert hier. – cheborneck