2012-03-07 1 views
0

есть все равно, чтобы обернуть textarea текстом с тегами? Javascript/JqueryJavascript оберните текст тегами bbcode?

B = Жирный I = Курсив U = Подчеркнутый S = Удар

Например:

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

Когда я выделить "здесь", а затем нажмите на смелый его будет таким.

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

Надежда я найти решение и это он благодарит.

ответ

3

это решение

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)); 
} 
1

Useage

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^