2010-05-06 181 views
1

我正在使用HTML选择onchange事件来触发另一个javascript函数func1。html select执行javascript onload

该html选项被写入到表单元素中,当用户点击一个按钮时这些元素是动态生成的。

问题是,我怎么能动态生成的窗体第一次显示时触发JavaScript的func1? 我正在考虑沿着on_first_show事件表单行的内容?

以下是摘录。我不可能得到警报(“唐”)的工作是(一只是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>"; 

- 编辑 - 我想我可以在HTML中添加另一种选择选择,告诉用户选择,所以迫使onchange生效。或者我可以只添加一个提交按钮。

回答

1

您可以使用document.createElement方法而不是使用文字索引,并通过调用addEventListener来添加onchange事件处理程序。

你是单引号收盘前选择标签

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

应该是:

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

如jQuery库将让你这样做:

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

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

你然而,对于大多数浏览器来说,这并不需要一个库。一个change事件会冒泡到包含元素,所以你可以在那里听它。我相信这是IE that won't bubble up a change event