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&quot; onclick=&quot;updateTxtContent('13')">option a</option>
<option value="14&quot; onclick=&quot;updateTxtContent('14')">option b</option>

Natürlich sollte es einen besseren Weg geben, den ich nicht kenne.

0
Vad.Gut 10 Okt. 2012 im 01:29

4 Antworten

Beste Antwort

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);
}
2
davehale23 9 Okt. 2012 im 21:39

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);'>
3
MikeB 9 Okt. 2012 im 21:36

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

0
a1an 21 Apr. 2016 im 07:42

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.

0
epascarello 9 Okt. 2012 im 21:34