在我理解支持函数addEventListener
的Internet Explorer 9中,当我尝试在此处使用该函数时,给出了一个奇怪的错误:
function addEvent(evnt, elem, func) {
if (elem.addEventListener) // W3C DOM
elem.addEventListener(evnt,func,false);
else if (elem.attachEvent) { // IE DOM
elem.attachEvent("on"+evnt, func);
}
else { // No much to do
elem[evnt] = func;
}
}
(由此提出另一个问题)
我收到错误:
SCRIPT5007:无法获取属性“addEventListener”的值:object为null或undefined。
它在if(elem.addEventListener)
我传递的是document.getElementById('search')
,这是一个文本输入字段;对于evnt,我传递了它keydown
,而且我正在传递函数:
function(e) {
if (!e)
{
var e = window.event;
}
// Enter is pressed
if (e.keyCode == 13)
{
search($("#search").val());
$("#search").val("");
$("#search").blur();
}
}
我在Chrome,Firefox或Safari中没有遇到任何问题,但IE9让我感到悲伤。
修改
好吧我已经通过将eventlistener放入内联来使JS正常运行,但我仍然遇到问题,这似乎是整个事情背后的父问题:document.getElementById('search')
返回null < strong>仅限于IE 。它适用于每个其他浏览器,只有这个一个元素返回null。
编辑2 - 我已更新问题标题以反映此处的真实问题。
现在问题的根源是<input>
根本没有出现在HTML中(尽管 显示在源代码中)......?我有一个<button>
内的输入字段,它可以在其他所有浏览器中完美地工作,但不能在IE中使用。我该如何解决这个问题?
答案 0 :(得分:5)
在<input>
内<button>
考虑将<label>
置于<span>
内,或click
与{{1}}处理程序一起使用是无效的合适的CSS。