2016-12-07 2 views
0

У меня есть много флажка с OnChange события, которые изменяют цвет линии, где проверяются:OnChange не работает на флажке, когда есть несколько проверки

<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'); 
    } 
} 

У меня есть функция, которая позволяет проверить все или снимите флажок. Но если я использую, событие onchange никогда не вызывается, даже если все проверено. Почему? И как я могу это сделать?

+1

вы не можете использовать $ (это) в атрибуте –

+0

вы можете вызвать событие: http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript –

ответ

0

Как уже говорилось, вы не можете использовать $ в шаблоне html; Вы можете, однако, передать this в качестве аргумента к вашему OnChange обработчика:

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

Хорошо, это работает, когда я проверяю e одним (как и раньше), но когда я проверяю все одновременно с функцией, onchange никогда не вызывается ... – Grichka

+0

Ну, это еще одна проблема :) Возможно, вы, вероятно, измените свою функцию «выбрать все» – Fissio