用Javascript实现文本区域的隐式折叠

用Javascript实现文本区域的隐式折叠,javascript,jquery,textarea,folding,Javascript,Jquery,Textarea,Folding,我希望能够使用Javascript/jQuery在xhtmltextareas中创建一种折叠类型。例如,给定以下文本: ABC [123] DEF 当光标不在其上时,我希望将[123]减少到[],即对于光标|: ABC [] DEF| AB|C [] DEF ABC [|123] DEF ABC [12|3] DEF 当然,我希望大括号内的内容在项目折叠时(即光标退出大括号时)被保留,在项目折叠时(光标进入大括号时)被恢复 我非常感谢你对这件事的想法 多谢各位 Brian您可能希望了解一些用

我希望能够使用Javascript/jQuery在xhtml
textarea
s中创建一种折叠类型。例如,给定以下文本:

ABC [123] DEF
当光标不在其上时,我希望将
[123]
减少到
[]
,即对于光标
|

ABC [] DEF|
AB|C [] DEF
ABC [|123] DEF
ABC [12|3] DEF
当然,我希望大括号内的内容在项目折叠时(即光标退出大括号时)被保留,在项目折叠时(光标进入大括号时)被恢复

我非常感谢你对这件事的想法

多谢各位


Brian

您可能希望了解一些用JavaScript实现的富文本编辑器。如果将折叠视为一种内联样式(css display:none;}),我相信您可以在语法高亮显示中添加一条规则,以使折叠工作起来,而无需付出太多努力

您还可以看看Mozilla的bespin项目()。无法发布更多链接,这有点新鲜。

$(function()){
$(function(){
  //Format on load
  $(".folding").html('[]');

  //Wire up load
  $(".folding").mouseover(function(){
    $(this).html('[' + $(this).attr("original") + ']');
  }).mouseout(function(){
    $(this).html('[]');
  });                   
});


<BODY>ABC <span class="folding" original='123'>[123]</span> DEF</BODY>
//加载格式 $(“.folding”).html(“[]”); //接线负载 $(“.folding”).mouseover(函数(){ $(this.html('['+$(this.attr(“原始”)+']'); }).mouseout(函数(){ $(this.html(“[]”); }); }); ABC[123]DEF

这应该对你有用。虽然不是最有说服力的,但能提供所需的结果。

要开始,请阅读以下内容:注意,如果你想使用鼠标悬停,很遗憾,这种方法不起作用。它涉及插入符号的位置,它只在单击(或键入时)时移动.Pointy:这是一个不错的起点。我最近回答了一个类似的问题,并提出了一个解决方案,可以在IE中正确使用换行符的文本区域中获取光标位置,这是我在其他任何地方都没有见过的:@Pointy,Tim Down:谢谢,这是一个有用的参考。我一直在使用jQuery的FieldSelection插件,这是一个有用的b例如。下一步(即折叠)似乎还没有开发出来。@Michael Mior:我只是在寻找基于文本光标移动的展开。谢谢你的想法。虽然这允许折叠鼠标悬空。但这并不能解决文本区域一部分的插入符号问题。