jquery
  • checkbox
  • onchange
  • 2016-08-29 4 views 0 likes 
    0

    Ich bin ein onchange Ereignis auf Kontrollkästchen wie diese Befestigung:Checkbox onChange Brennen zweimal

    $("input[type='checkbox'][name='auswahl[]']").on("change", function() { 
        alert($(this).attr("id") + ' ' + $("label[for='" + $(this).attr("id") + "']").text() + $(this).attr("checked")); 
    }); 
    

    Die Kontrollkästchen wie folgt aussehen:

    <input type="checkbox" name="auswahl[]" id="aus_nunatsiaqnews_ca"><label for="aus_nunatsiaqnews_ca" title="Canada">Nunatsiaq News</label> 
    

    Leider ist die Veranstaltung zweimal feuert. Wenn ich den oben angegebenen Code isoliere und auf eine Testseite lege, ist alles in Ordnung und das Ereignis wird nur einmal ausgelöst. Brauchen Sie Hilfe.

    +0

    Wenn Sie den Event-Handler sind angebracht? – Satpal

    +0

    es löst einmal https://jsfiddle.net/gkz5owms/ aus. Ich denke irgendwie, dass du "onchange" zwei mal anfügst. – esertbas

    +0

    @Satpal: Ich füge es am unteren Ende der Seite an, nachdem die Checkboxen definiert wurden. Kein Onload oder Dokument-Ready wird verwendet. – Sempervivum

    Antwort

    0

    Dies passiert normalerweise, wenn ein Steuerelement mit einem "onClick" -Ereignis in einem anderen Steuerelement mit einem "onClick" -Ereignis verschachtelt ist. Wenn Sie auf eines der Elemente klicken, werden die Ereignisse für beide Elemente ausgelöst, da Sie nicht wissen können, auf welche der Elemente Sie klicken möchten. Zum Glück kann dies in Javascript verhindert werden. im HTML, vorbei an die "$ event" Parameter an die Funktion, die das Click-Ereignis wie so Griffe:

    onClick="myFunc($event)"

    und dann in "myFunc" Verwendung "stopPropagation" als solche:

    myFunc($event) { 
     
        // ... some code ... // 
     
        $event.stopPropagation(); 
     
    }

    Verwandte Themen