Событие onkeypress Firefox не передается в параметре события - PullRequest
2 голосов
/ 05 октября 2011

У меня есть следующий HTML-тег textarea, который я вставляю во время выполнения в DOM (я только показал, как он выглядит после того, как он вставлен), и я установил событие onkeypress для запуска в качестве встроенного атрибута. Однако в Firefox я получаю сообщение об ошибке «событие не определено», когда я нажимаю клавишу, которая находится в фокусе.

<textarea rows="3" cols="70" type="text" name="resultsRename" value="" class="redlining_textContent_Dialog_textbox" dojoType="dijit.forms.SimpleTextArea" id="labelText" propercase="false" style="width:auto;" onkeypress="return handleEnterKey(event,doFunc();">

function handleEnterKey(e, func)
{
    //alert("hit key handler");
    //alert(dojo.toJson(e));
    var key = e.keyCode || e.which;
    if (key == 13)
    {
        func();
        return false;
    }
    else
    {
        return true;
    }

}

Я смотрел на тонны помощи, говорящей мне, что я должен ожидать, что параметр объекта события будет доступен для кода js, который я помещаю в атрибут onkeypress, но я продолжаю получать эту ошибку.

Тег textarea не находится внутри пары тегов формы (где-то я видел, что это иногда может быть проблемой, но у меня нет выбора здесь).

Я пробовал использовать функцию handleEnterKey только с параметром e, но это не имеет значения.

Если я изменю атрибут inline на ...

onkeypress="return handleEnterKey(this,doFunc();"

... Я ввожу handleEnterKey с моим параметром e, установленным для объекта textarea. Почему мне не передают объект события? Очевидно, это хорошо работает в IE с его глобальным объектом события.

На моем уме. Помоги мне переполниться стеком ... ты моя единственная надежда!

1 Ответ

4 голосов
/ 05 октября 2011

handleEnterKey не следует даже вызывать, так как у вас есть синтаксическая ошибка.

return handleEnterKey(event,doFunc();

должно быть

return handleEnterKey(event,doFunc);

Передача event определенно работает: DEMO

...