Как добавить событие onchange в поле выбора через javascript? - PullRequest
32 голосов
/ 27 октября 2009

У меня есть скрипт, в котором я динамически создаю блоки выбора. Когда эти блоки созданы, мы хотим установить событие onchange для нового блока, чтобы оно указывало на функцию с именем toggleSelect ().

Я не могу получить правильный синтаксис для создания события onchange. Может кто-нибудь сказать мне, что я делаю не так? Это не выдает ошибку, но не работает, либо.

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

Ответы [ 4 ]

38 голосов
/ 27 октября 2009

Вот еще один способ присоединения события на основе Спецификации событий W3C DOM уровня 2 :

  transport_select.addEventListener(
     'change',
     function() { toggleSelect(this.id); },
     false
  );
30 голосов
/ 27 октября 2009

Добавить

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

SetAttribute

или попробуйте заменить onChange на onchange

12 голосов
/ 18 июля 2014

заменить:

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

с:

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

on ' C ' hange >> on ' c ' hange


Вы также можете использовать addEventListener .

1 голос
/ 03 июля 2015

Если вы используете prototype.js, вы можете сделать это:

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

Это устраняет (как надеюсь) проблему в кросс-браузерах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...