覆盖contentEditable创建的内部html

时间:2011-03-31 12:04:20

标签: javascript jquery html contenteditable

我用html + js写一个类似Soulver的应用程序。我需要从输入(突出显示)自定义文本。对于输入我使用<div contenteditable="true"></div>每次输入div后出现新的div。我该如何分配给它id。或者用\ n覆盖所有内部div,就像在textarea中一样。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在每个keyup之后,您可以遍历divs并向其添加attr

        $('#your-editable-div').live('keyup', function() {
            $(this).children('div').each(function(index) {
                $(this).attr('id', 'element-'+index);
            });
        });

答案 1 :(得分:0)

有一点需要注意的是contentEditable并不满足。 IE7因此而中断。

您是否在Mac上使用Firefox进行测试? Chrome和Safari没有相同的问题。

您可以检测Enter键,然后停止默认操作。然后你可以插入任何你想要的东西,而不是浏览器特定的东西。

使用jQuery(未经测试)

//prevent users from typing on datepickers
 $("body").delegate('[contentEditable="true"]', "keypress", function(event)
 {
    //detect and override enter key press
    if(event.which==8)
    {
        event.preventDefault(); /* stop default */
        /* More code to insert something at the mouse location */
    }
 });

有关如何插入光标位置的信息,请参阅此问题 Contenteditable text editor and cursor position