Ich habe ein sehr frustrierendes Problem. Ich habe diesen Code, der meine Ergebnisse herausfiltert und in ein Auswahlfeld eingibt
var syn = <?=json_encode($syn)?>;
function filterByCity() {
var e = document.getElementById("city_filter");
var city = e.options[e.selectedIndex].value;
var selectOptions = document.getElementById('syn_list');
selectOptions.options.length = 0;
for (i = 0; i < syn.length; i++) {
if (city == syn[i]['city'] || city == 'all') {
selectOptions.options[selectOptions.options.length] = new Option(syn[i]['name'], syn[i]['id'] + '" onclick="updateTxtContent(\'' + syn[i]['id'] + '\')');
}
}
}
Wie Sie vielleicht sehen, füge ich jeder ausgewählten "Option" einen Onclick-Listener hinzu, der im Quellcode der Seite selbst gut aussieht. Wenn ich ihn jedoch in eine Bearbeitung kopiere, stelle ich fest, dass mein Problem darin besteht, dass die Funktion "updateTxtContent ()" ist nicht angerufen.
<select size="10" name="syn_list" id="syn_list" class="span12" dir="rtl" style="text-align:right;">
<option value="13" onclick="updateTxtContent('13')">option a</option>
<option value="14" onclick="updateTxtContent('14')">option b</option>
Natürlich sollte es einen besseren Weg geben, den ich nicht kenne.
4 Antworten
Ich denke, Sie möchten Ihren Event-Handler eher auf Ihrer Auswahl als auf der Option haben. Siehe diese Geige für das, was ich meine
<select size="10" name="syn_list" id="syn_list" class="span12" dir="rtl" style="text-align:right;" onchange="updateTxtContent();">
<option value="13">option a</option>
<option value="14">option b</option>
</select>
<script>
function updateTxtContent(){
alert($("#syn_list").val());
}
</script>
Oder da es so aussieht, als würden Sie jQuery nicht verwenden:
function updateTxtContent(){
var e = document.getElementById("syn_list");
var f = e.options[e.selectedIndex].value;
alert(f);
}
Versuchen Sie möglicherweise ein Onchange-Ereignis in Ihrem Select-Tag.
<select size="10" name="syn_list" id="syn_list" class="span12" dir="rtl" style="text-align:right;" onchange='updateTxtContext(this.value);'>
Ab 2016 werden Klickereignisse anscheinend für die Auswahl unterstützt und die Option wird als Ziel angeklickt:
Mit jQuery
click_handler = function(e) {
alert('clicked on: ' + e.target.value);
}
$('#syn_list').click(click_handler);
Funktioniert zumindest in Firefox 44
Optionselemente können in den meisten Browsern keine Klickereignisse haben.
Eine neue Option ist das Festlegen des Werts und des Texts. Sie sind sich nicht sicher, warum Sie glauben, dass Sie damit andere Attribute festlegen können.
Sie möchten ein Änderungsereignis für das Auswahlelement verwenden.