Ich habe mehrere wählt:Gibt es eine Möglichkeit, die Optionen von Html Select erneut zu füllen, ohne das Ereignis Change auszulösen (mit jQuery)?
<select id="one">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<select id="two">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
Was ich will, ist, um „Eins“ aus der ersten Auswahl, dann haben diese Option von der zweiten entfernt werden. Dann, wenn Sie "zwei" von der zweiten wählen, möchte ich, dass eine von der ersten entfernt.
Hier ist die JS Ich habe zur Zeit:
$(function() {
var $one = $("#one");
var $two = $("#two");
var selectOptions = [];
$("select").each(function (index) {
selectOptions[index] = [];
for (var i = 0; i < this.options.length; i++) {
selectOptions[index][i] = this.options[i];
}
});
$one.change(function() {
var selectedValue = $("option:selected", this).val();
for (var i = 0; i < selectOptions[1].length; i++) {
var exists = false;
for (var x = 0; x < $two[0].options.length; x++) {
if ($two[0].options[x].value == selectOptions[1][i].value)
exists = true;
}
if (!exists)
$two.append(selectOptions[1][i]);
}
$("option[value='" + selectedValue + "']", $two).remove();
});
$two.change(function() {
var selectedValue = $("option:selected", this).val();
for (var i = 0; i < selectOptions[0].length; i++) {
var exists = false;
for (var x = 0; x < $one[0].options.length; x++) {
if ($one[0].options[x].value == selectOptions[0][i].value)
exists = true;
}
if (!exists)
$one.append(selectOptions[0][i]);
}
$("option[value='" + selectedValue + "']", $one).remove();
});
});
Aber wenn die Elemente neu besiedelt bekommen, es löst das Änderungsereignis in der Auswahl dessen Optionen ändern sich. Ich habe versucht, nur das disabled
Attribut auf die Option, die ich entfernen möchte, aber das funktioniert nicht mit IE6.