2011-03-31 37 views
0

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

回答

1

每个keyup后,你可以通过divs循环,并添加attr对他们说:

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

需要注意的一点是CONTENTEDITABLE不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

插入这个问题