2010-05-06 180 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