【问题标题】:Javascript wrap text with tags bbcode?Javascript用标签bbcode包装文本?
【发布时间】:2012-03-07 00:52:01
【问题描述】:

有没有用标签来包装 textarea 文本? Javascript/Jquery

B = 粗体 I = 斜体 U = 下划线 S = 加粗

例如:

-+-+-+-+-
 B I U S
-+-+-+-+-
<textarea>
 Some text here
</textarea>

当我突出显示“这里”然后单击粗体时,它会像这样。

-+-+-+-+-
 B I U S
-+-+-+-+-
<textarea>
 Some text [b]here[/b]
</textarea>

希望我能找到解决办法 就是这样,谢谢。

【问题讨论】:

    标签: javascript jquery bbcode


    【解决方案1】:

    这就是解决办法

    function wrapText(elementID, openTag, closeTag) {
        var textArea = $('#' + elementID);
        var len = textArea.val().length;
        var start = textArea[0].selectionStart;
        var end = textArea[0].selectionEnd;
        var selectedText = textArea.val().substring(start, end);
        var replacement = openTag + selectedText + closeTag;
        textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
    }
    

    【讨论】:

      【解决方案2】:

      用途

      console.log(parseBB('[b]hello [/b][u]world[/u]'));
      console.log(parseBB(document.getElementById('textareaID').value));
      console.log(parseBB($('#textareaID').val()));
      

      测试用例

      $('#output-container').html(parseBB($('#textareaID').val()));
      

      ..

      function parseBB(string){
      var _string = string.replace(/\n/g, '<br>'),
      parseExp = new RegExp(/^(.*)\[(b|u|i|s)\]([A-Za-z0-9 ._-]+)\[\/[a-z]+\](.*)$/g);
      
      (function run(){
          if(parseExp.test(_string)){
              _string = _string.replace(parseExp , '$1<$2>$3</$2>$4');
              run();
          }
      })();
      return _string;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多