2012-03-15 15 views
4

我想製作一個簡單的文本編輯器,讓人們可以使字體變成粗體,斜體或下劃線。我有點困惑於如何使用twitter引導按鈕上的「活動」類來切換功能,例如添加不同字體樣式到文本區中的單詞。Twitter Bootstrap按鈕複選框在製作wysiwyg文本編輯器時切換問題

這裏是我的HTML:

<span class="btn-group" data-toggle="buttons-checkbox"> 
    <button class="btn btn-bold">Bold</button> 
    <button class="btn btn-italics">Italics</button> 
    <button class="btn btn-underline">Underline</button> 
</span>  

<textarea></textarea> 

這裏是我的JS:

 $('.btn').click(function(){   
      if($('.btn-bold').hasClass('active')){     
      $('.btn-bold').toggle(
       function() { 
        $('textarea').val($('textarea').val()+"<span style='font-weight:bold'>");}, 
       function() {      
        $('textarea').val($('textarea').val()+"</span>"); 
      }); //toggle 
      } //if 
     }); //click 

我覺得我需要有一個像這樣爲每個字體樣式代碼:粗體,斜體,下劃線我切換。但是,正如你所看到的,我只是想讓文本變成粗體字(更不用說不起作用),所以必須有更好的方法。任何想法將不勝感激。

+0

你想添加格式內textarea的? – 2012-03-15 22:15:53

+0

我想添加格式化的地方,我把它放在上面的例子textarea只是爲了保持簡單,我想能夠點擊粗體按鈕,並生成這樣的HTML ...這不是粗體這是BOLD 2012-03-15 23:01:46

+0

所以你想按下時按鈕上的活動類切換?並同時刪除格式? – 2012-03-16 14:54:04

回答

3

編輯內容的一個更好的方法是使用contentEditable屬性,因爲它在瀏覽器和各種命令(execCommand)之間提供了很好的支持,可以執行編輯內容,更多信息請參閱execCommand

這裏是一個簡短的演示中,我對如何去做:

Demo

相關代碼:

JS

var current; 
$(function() { 
    $("div[contenteditable]").focus(function() { 
     current = this; 
    }); 

    // bold 
    $('.btn-bold').click(function() { 
     document.execCommand('bold', false, null); 
     $(current).contents().focus(); 
    }); 

    //italics 
    $('.btn-italics').click(function() { 
     document.execCommand('italic', false, null); 
     $(current).contents().focus(); 
    }); 

    //underline 
    $('.btn-underline').click(function() { 
     document.execCommand('underline', false, null); 
     $(current).contents().focus(); 
    }); 
}); 
+0

嗨安德烈斯,這真的很棒!哇,我非常感謝這個幫助,這正是我需要的!謝謝! – 2012-03-16 16:45:19

+0

Andres,忘了一個問題,我如何讓這個contentEditable DIV與我的表單一起提交(如input/textarea),以便我可以將內容存儲在我的數據庫中? DIV是否支持名稱屬性? – 2012-03-16 17:00:03

+0

@timpeterson您可以將contentEditable div放在表單中,並將其提交給您選擇的編程語言。 – 2012-03-16 17:34:31