2014-07-23 158 views
-4

我有一個組合框,其中有一列我想用來觸發另一個輸入字段中的文本的值。無法使addListener函數正常工作

I.e.如果有人選擇了一個特定的海灘,它會顯示關於狗是否被允許離開該區域的皮帶的信息。

我寫了幾個函數,但它似乎並不想觸發。

function initListeners(){  
    addEventListener(document.forms[0].cboBeachSelect, 'change', DisplayBeachZoneInfo); 
} 

function DisplayBeachZoneInfo() { 
    alert("Yep this works"); 
} 

我只是做了一個測試警告框彈出之前,我試圖填補文本框(稱爲txtBeachZoneInfo),但它沒有任何射擊。

因爲我已經做了任何JavaScript,所以我不知道語法是否發生了變化,因此不勝感激。

*編輯* 這是一個獨立的.js文件,從eForm中調用。沒有周圍的HTML。我在使用這種方法之前完成了它,但它今天不起作用!

*編輯2 * 就這樣我知道下次,我不正確地做了什麼來賺取downvotes我的問題。不是防守,只是想知道,所以我可以在將來避免它,並提出更好的問題。

+0

你能發佈你的HTML的相關部分來支持你的問題嗎? – Yaje

+0

題外話:你應該使用'document.forms [0] .elements.cboBeachSelect'和'elements'。即使大多數瀏覽器不需要它,這也是獲得表單元素的正確方法。 – Oriol

+2

這不是你如何使用'addEventListener' ....它的語法沒有改變。 –

回答

2

如果你檢查你的控制檯,你會看到錯誤。

addEventListenerEventTarget實例的一種方法,不是全局函數。

你應該使用它像:

document.forms[0].elements.cboBeachSelect 
    .addEventListener('change', DisplayBeachZoneInfo); 

您可能想通過false作爲第三個參數useCapture,以使其對一些舊的瀏覽器。

+0

好的,謝謝你,我感謝你的幫助。我改變了它,當我改變組合框中的值時,它仍然不會拋出我的警報框。 我可以嘗試的其他想法? –

+0

您可能意思是「實現[* Event Target interface *](http://www.w3.org/TR/DOM-Level-3-Events/#interface-EventTarget)」的對象「。 :-) – RobG

+0

@RobG是的。不一樣嗎? – Oriol

0

原來,將以下內容添加到附加到我的eForm的.js文件中。

if (window.addEventListener) { 
    window.addEventListener('load', initListeners, false); 
    } 
    else if (window.attachEvent) { 
    window.attachEvent('onload', initListeners); 
    } 

感謝大家試圖幫助。