web-dev-qa-db-fra.com

Comment ajouter un événement onchange à une boîte de sélection via javascript?

J'ai un script où je crée dynamiquement des boîtes de sélection. Lorsque ces boîtes sont créées, nous voulons définir l'événement onchange pour que la nouvelle boîte pointe vers une fonction appelée toggleSelect ().

Je n'arrive pas à obtenir la bonne syntaxe pour créer l'événement onchange. Quelqu'un peut-il me dire ce que je fais mal? Cela ne génère pas d'erreur, mais ne fonctionne pas non plus.

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

Ajouter

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

setAttribute

ou essayez de remplacer onChange par onchange

30
rahul

Voici une autre façon d'attacher l'événement en fonction de spécification des événements W3C DOM niveau 2 :

  transport_select.addEventListener(
     'change',
     function() { toggleSelect(this.id); },
     false
  );
38
o.k.w

remplacer:

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

avec:

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

sur ' [~ # ~] c [~ # ~] ' hange >> sur ' c ' suspendre


Vous pouvez également utiliser addEventListener .

12
IgniteCoders

Si vous utilisez prototype.js, vous pouvez le faire:

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

Cela élimine (comme on l'espère) le problème dans cross-browser