2009-10-27 17 views
26

Mam skrypt, w którym dynamicznie tworzę pola wyboru. Po utworzeniu tych skrzynek chcemy ustawić zdarzenie onchange dla nowego pola, aby wskazywało na funkcję o nazwie toggleSelect().Jak dodać zdarzenie onchange do pola wyboru za pośrednictwem javascript?

Nie mogę uzyskać prawidłowej składni, aby utworzyć zdarzenie onchange. Czy ktoś może mi powiedzieć, co robię źle? Nie rzuca błędu, ale też nie działa.

col = dataRow.insertCell(0); 
    var transport_select = document.createElement('select'); 
    transport_select.id = transport_select_id; 
    transport_select.options[0] = new Option('LTL', 'LTL'); 
    transport_select.options[1] = new Option('FTL', 'FTL'); 
    transport_select.onChange = function(){toggleSelect(transport_select_id);}; 
    col.appendChild(transport_select); 

Odpowiedz

25

Dodaj

transport_select.setAttribute("onchange", function(){toggleSelect(transport_select_id);}); 

setAttribute

lub spróbuj wymienić onChange z onchange

+3

Dzięki! Zmiana go z "onChange" na "onchange" naprawił to. – user77413

+1

Niektóre wersje IE są znane z problemów z atrybutem setAttribute, więc podejście transport_select.onchange = function() {...} wydaje się bardziej bezpieczne;) – lucaferrario

8

wymienić:

transport_select.onChange = function(){toggleSelect(transport_select_id);}; 

z:

transport_select.onchange = function(){toggleSelect(transport_select_id);}; 

sprawie C 'mień >> sprawie C' mień


Można również użyć addEventListener.

1

Jeśli używasz prototype.js następnie można to zrobić:

transport_select.observe('change', function(){ 
    toggleSelect(transport_select_id) 
}) 

to wyeliminować (w nadziei) problem w krzyżowych przeglądarek

Powiązane problemy