2015-12-16 3 views
-1

Пожалуйста, у меня есть этот код javascript, я хочу, чтобы он обернул выделенный текст с помощью примера bbcode [b] peter [/ b], но не работает для меня, может кто-нибудь исправить это или дать мне идея сделать это?Как обернуть выделенный текст с помощью bbcode с помощью javascript

<script type="text/javascript"> 
function bbcoder(){ 
      var old = ""; 
      var value = textarea.value; 
      var startPos = textarea.selectionStart; 
      var endPos = textarea.selectionEnd; 
      var selectedText = value.substring(startPos, endPos); 

function bbbold(){ 
var old=document.getElementsByName("blog_body")[0].value; 
document.getElementsByName("blog_body")[0].value=old+"[b]"+ selectedText +"[/b]"; 
} 

function bbitalic(){ 
var old=document.getElementsByName("blog_body")[0].value; 
document.getElementsByName("blog_body")[0].value=old+"[i]"+ selectedText +"[/i]"; 

} 

function bbunder(){ 
var old=document.getElementsByName("blog_body")[0].value; 
document.getElementsByName("blog_body")[0].value=old+"[u]"+ selectedText +"[/u]";} 

function bbquote(){ 
var old=document.getElementsByName("blog_body")[0].value; 
document.getElementsByName("blog_body")[0].value=old+"[quote]"+ selectedText +"[/quote]"; 
} 
</script> 

Вот HTML, образуют

<div id="editor"> 
    <ul id="buttons"> 
     <li><a href="javascript:void(0);" onclick="bbbold()">B</a></li> 
     <li><a href="javascript:void(0);" onclick="bbunder()"><u>U</u></a></li> 
     <li><a href="javascript:void(0);" onclick="bbitalic()">I</a></li> 
     <li><a href="javascript:void(0);" onclick="bbquote()">""</a></li> 
    </ul> 
    <form id="editor-form" action="" method="post"> 
     <div> 
      <textarea id="blog_body" name="blog_body" rows="15" cols="20" placeholder="Use editor buttons on selected text"></textarea> 
     </div> 
     <p><input type="submit" value="Save"></p> 
    </form> 
</div> 

ответ

0

Обновление: jsFiddle Пожалуйста, обратите внимание, что я не был в состоянии получить функцию внутри функции, работающей в jsFiddle поэтому пришлось переместить их.

Try ниже код

function bbcoder(code) { 
    try { 
     var old = ""; 
     var textarea = document.getElementsByName("blog_body")[0]; 
     var value = textarea.value; 
     var startPos = textarea.selectionStart; 
     var endPos = textarea.selectionEnd; 
     var selectedText = value.substring(startPos, endPos); 


     switch (code) { 
      case 'B': 
       bbbold(); 
       break; 
      case 'U': 
       bbunder(); 
       break; 
      case 'I': 
       bbitalic(); 
       break; 
      case 'Q': 
       bbquote(); 
       break; 
      default: 
       alert('Invalid argument'); 
       break; 
     } 

     function bbbold() { 
      var old = textarea.value; 
      textarea.value = old.replaceBetween(startPos, endPos, "[b]" + selectedText + "[/b]"); 
     } 

     function bbitalic() { 
      var old = textarea.value; 
      textarea.value = old.replaceBetween(startPos, endPos, "[i]" + selectedText + "[/i]"); 

     } 

     function bbunder() { 
      var old = textarea.value; 
      textarea.value = old.replaceBetween(startPos, endPos, "[u]" + selectedText + "[/u]"); 
     } 

     function bbquote() { 
      var old = textarea.value; 
      textarea.value = old.replaceBetween(startPos, endPos, "[quote]" + selectedText + "[/quote]"); 
     } 

    } catch (e) { 
     alert(e.toString()); 
    } 

} 

//http://stackoverflow.com/questions/14880229/how-to-replace-a-substring-between-two-indices 
String.prototype.replaceBetween = function (start, end, what) { 
    return this.substring(0, start) + what + this.substring(end); 
}; 
Смежные вопросы