0

このコードを Internet Explorer 8 で動作させる必要があります。

http://jsfiddle.net/tYtQV/5/

$("tbody tr td").bind("click", onClick);

function onClick(e) {
    if(e.currentTarget.contentEditable != null)
    {
            $(e.currentTarget).attr("contentEditable",true);
    }
    else
    {
            $(e.currentTarget).append("<input type='text'>");
    }
}

Firefox や Chrome では正常に動作しますが、IE8 では動作しません。

bind() を live() に変更しようとしましたが、効果はありません - リスト項目をクリックしても何もしません (ただし、イベントハンドラーは呼び出されます)。

contentEditable をすべて小文字の「contenteditable」に変更すると、クリックされるたびにテキストフォームが要素に追加されますが、これは私が望むものではありません。

このコードの目的は、テーブル アイテムを編集可能にすることです。これを修正する方法についてのアイデアはありますか?

前もって感謝します!

4

3 に答える 3

3

TD 要素を contenteditable として設定することはできません。このページを参照して確認してください: http://msdn.microsoft.com/en-us/library/ms537837(v=vs.85).aspx

セルに空のdivを追加して、それを作成できますcontenteditable

于 2013-05-19T15:07:04.400 に答える
0

IE には多くの要素があり、直接 contenteditable を設定することはできません。ただし、テーブル全体をコンテンツ編集可能な div にラップすることはできます。

 <div contenteditable="true">
     <table>
       ...
    </table>
 </div>
于 2014-08-26T08:40:27.600 に答える
0

div に contenteditable を追加する際の唯一の問題は、プレースホルダーの問題です。これは、領域がその特定の領域に対してのみ編集可能になるためです。プレースホルダーがあり、プレースホルダーを削除してさらに書き込むと、編集する機能が削除されるため、必ずそれを処理してください。

于 2014-08-13T20:55:20.190 に答える