2013-04-27 2 views
2

В Internet Explorer 9, который я понимаю, поддерживает функцию addEventListener, дает мне странную ошибку, когда я пытаюсь использовать функцию здесь:IE9 не позволяя входы внутри кнопки тегов

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; 
    } 
} 

(предоставлено другой вопрос здесь, на SO)

Я получаю ошибку:

SCRIPT5007: Unable to get the value of the property 'addEventListener': object is null or 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 дает мне горе.

Редактировать

Хорошо Я получил JS, чтобы работать должным образом, поставив EventListener в инлайн, но я все еще получаю проблему, которая, как представляется, быть родителем проблема за все это здесь: document.getElementById('search') возвращает только в IE. Он работает в каждый другой браузер, и это только один элемент, который возвращает null.

Редактировать 2 - Я обновил название вопроса, чтобы отразить истинную проблему здесь.

Так что корень проблемы в настоящее время является то, что <input> не отображается в HTML вообще (хотя это делает отображаться в исходном коде) ...? У меня есть поле ввода внутри <button>, которое отлично работает в любом другом браузере, но не в IE. Как я могу это исправить?

+1

Насколько вы уверены, что IE на самом деле находит элемент, который, по вашему мнению, находит? Другими словами, вы использовали отладчик, чтобы проверить и посмотреть, что такое «elem» на самом деле? – Pointy

+0

Где/Как вы называете 'addEvent' – Musa

+0

Можете ли вы разместить jsfiddle или codepen или plunker? – zetlen

ответ

5

Это не действует, чтобы иметь <input> внутри <button> рассмотреть положить его внутрь <label> вместо или <span> с click обработчиком и соответствующий CSS.

+0

Замена кнопки этикеткой работала отлично! Мне даже не пришлось менять свой CSS! Благодаря! – David

Смежные вопросы