IE9不允许按钮标签内的输入

Dav*_*vid 2 javascript addeventlistener internet-explorer-9

在我理解支持该功能的Internet Explorer 9中,addEventListener当我尝试在此处使用该函数时,给出了一个奇怪的错误:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

(关于SO的另一个问题)

我收到错误:

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(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Chrome,Firefox或Safari中没有遇到任何问题,但IE9让我感到悲伤.

编辑

好吧,我已经通过将eventlistener放入内联来使JS正常运行,但我仍然遇到问题,这似乎是整个事情背后的父问题:仅在IE中document.getElementById('search')返回null .它适用于所有其他浏览器,只有这一个元素返回null.

编辑2 - 我已更新问题标题以反映此处的真实问题.

所以问题的根源现在是<input>根本没有出现在HTML中(虽然它确实出现在源代码中)......?我有一个输入字段<button>,它在所有其他浏览器中完美地工作,但不在IE中.我怎样才能解决这个问题?

Nie*_*sol 5

有一个<input>内部<button>考虑把它放在一个<label>替代,或<span>一个click处理程序和合适的CSS 是无效的.