2014-07-23 108 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); 
    } 

感谢大家试图帮助。