2010-05-06 4 views
1

J'utilise HTML select onchange event pour déclencher une autre fonction javascript func1.html select execute javascript onload

Cette sélection html est écrite dans un élément de formulaire, qui est généré dynamiquement lorsque les utilisateurs cliquent sur un bouton.

Le problème est comment puis-je déclencher le javascript func1 lorsque le formulaire généré dynamiquement est d'abord affiché? Je pense à quelque chose le long de la ligne de l'événement on_first_show pour le formulaire?

Voici l'extrait. Je ne pourrais pas obtenir l'alerte (« don ») de travailler soit (celui juste après div)

var sPopupContents = "<div ><script type='text/javascript'>alert('don');</script> </div>"; // this javascript is not executed ? I cant get the alert. 
sPopupContents += "<form name='theform' >"; 
sPopupContents += "<select name='theselect' onchange='alert(2);"; 
sPopupContents += "func1()>'"; 
sPopupContents += "<option value='0' selected='selected'>Value1</option><option value='1'>Value2</option><br/>"; 
sPopupContents += "</form>"; 

- EDIT - Je suppose que je peux ajouter une autre option dans le code HTML de sélection qui indique aux utilisateurs de sélectionner, forçant ainsi l'onchange à prendre effet. Ou je peux simplement ajouter un bouton Envoyer.

Répondre

1

Vous pouvez utiliser la méthode document.createElement au lieu d'utiliser des sings littéraux et ajouter le gestionnaire d'événements onchange en appelant addEventListener.

Vous fermez la balise select avant la guillemet simple

sPopupContents += "<select name='theselect' onchange='alert(2);"; 
sPopupContents += "func1()>'"; 

devrait être:

sPopupContents += "<select name='theselect' onchange='alert(2);"; 
sPopupContents += "func1()'>"; 
0

Une bibliothèque tels que jQuery vous permettrait de le faire:

(function() { 
    function selectChange() { 
    // save baby seals here 
    }; 

    $('select[name=theselect]').live('change', selectChange) 
    $(document).ready(selectChange); 
}(); 

Vous cependant, vous n'avez pas besoin d'une bibliothèque pour la plupart des navigateurs. Un événement change apparaîtra dans l'élément conteneur, vous pouvez donc l'écouter là-bas. Je crois que c'est IE that won't bubble up a change event.