2

ランタイムを DOM に挿入する次の textarea HTML タグがあり (挿入後の外観のみを示しています)、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;
    }

}

onkeypressattrに配置した js コードでイベント オブジェクト パラメータを使用できるようにする必要があることを示す多くのヘルプを見てきましたが、このエラーが発生し続けます。

textarea タグは、フォーム タグのペア内にありません (これが問題になる場合があることをどこかで見ましたが、ここでは選択の余地がありません)。

パラメータhandleEnterKeyのみで関数を試しましたが、違いはありません。e

インライン属性を次のように変更すると...

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

...パラメータを textarea オブジェクトに設定してhandleEnterKeyを入力します。eイベント オブジェクトが渡されないのはなぜですか? 明らかに、これはグローバル イベント オブジェクトを使用して IE で正常に動作します。

私の知恵の終わりに。スタックオーバーフローを助けてください...あなたは私の唯一の希望です!

4

1 に答える 1

4

handleEnterKey構文エラーがあるため、呼び出されるべきではありません。

return handleEnterKey(event,doFunc();

する必要があります

return handleEnterKey(event,doFunc);

合格eventは間違いなく機能します: DEMO

于 2011-10-05T15:37:10.770 に答える