2016-12-07 2 views
0

Ich habe viele Checkbox mit onChange Ereignis, das die Linienfarbe ändern, in dem geprüft wird:onChange funktionieren nicht auf Checkbox, wenn es mehrere Kontroll

<input type="checkbox" onchange="cocheCommande($(this))" name="${NAME_SELECTION}" value="<%=command.getCdeId()%>" /> 

function cocheCommande(chk) 
{ 
    alert("test cocheCommande"); 
    var tr=chk.closest('tr'); 

    if (chk.is(':checked')) 
    { 
     tr.css('background','#33EE33'); 
     tr.nextUntil("tr.entete","tr").css('background','#FFFF33'); 
    } 
    else 
    { 
     tr.css('background','#D0EED0'); 
     tr.nextUntil("tr.entete","tr").css('background','#EEEED0'); 
    } 
} 

Ich habe eine Funktion, die alles oder deaktivieren Sie überprüfen können. Aber wenn ich benutze, wird onchange-Ereignis nie aufgerufen, obwohl alles überprüft wird. Warum? Und wie kann ich tun?

+1

Sie können nicht mehr als $ (this) in Attribut –

+0

Sie können das Ereignis auslösen: http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript –

Antwort

0

Wie andere sagten, können Sie nicht $ in der HTML-Vorlage verwenden; aber Sie können, this als Argument für Ihre onchange-Handler übergeben:

HTML:

<input onchange="change(this)" type="checkbox" /> 

JS:

function change(elem) { 
    var element = $(elem); 
    console.log(element.next()) 
} 

https://plnkr.co/edit/dx8GoJxHwKa52VFCkn2G?p=preview

+0

Ok, es funktioniert, wenn ich anchecke e nach eins (wie vorher), aber wenn ich alles gleichzeitig mit einer Funktion überprüfe, wird onchange nie aufgerufen ... – Grichka

+0

Nun, das ist ein anderes Problem :) Du solltest wahrscheinlich deine "Alles auswählen" -Funktion irgendwie ändern – Fissio

Verwandte Themen