2011-12-07 146 views
0

我想做一個jQuery文本編輯器,我做了一些Google搜索,並獲得了一些工作的基本功能是,當用戶突出顯示textarea中的文本時,它將在前面添加[b], [/ b]在文本的結尾,但是它的作用是,如果用戶再次單擊相同的按鈕,它將刪除所有輸入的數據,並且只將突出顯示的文本與[b] [/ b]放在一起,代碼如下:jquery文本編輯器

$('#bold').mousedown(function(e) { 
    var txt = ''; 
    if (window.getSelection){ 
     txt = window.getSelection(); 
    } 
    else if(document.getSelection){ 
     txt = document.getSelection(); 
    } 
    else if(document.selection){ 
     txt = document.selection.createRange().text; 
    } 
    else return; 

    txt = "[b]"+txt+"[/b]"; 

    $('#reply').val(txt); 
}); 

HTML

<input type="button" value="Bold" id="bold" /> 
<form action="" method="get"> 
<textarea name="reply" id="reply" cols="100" rows="30">Test</textarea> 
</form> 
+3

爲什麼重新創建輪子? –

+0

我正在開發一個項目,當它賣掉時,我不想讓第三方的東西包含在內 –

回答

0

這是因爲選擇是首次點擊後,被清除。因此,第二個替換文本沒有要包裝的文本,因此只需將[b][/b]添加到textarea。

嘗試包裹,這使得更換在if條件如果選擇的東西,檢查線路:

if (txt !== undefined && txt.length > 0) { 
    txt = "[b]"+txt+"[/b]"; 
    $('#reply').val(txt); 
} 

你的邏輯出現,雖然有缺陷。想象一下,在textarea中有以下文字:

Lorem ipsum dolor sit amet。

如果我想強調ipsum並單擊#bold按鈕,textarea的將刪除所有換句話說,現在只想說:

[B]存有[/ B]

現在已經有很多其他的jQuery文本編輯器。如果是生產項目,它將爲您節省大量時間來使用其中的一種。如果你只是想學習jQuery,那麼一定要繼續。

+0

txt.length什麼也沒說,而是說undefined –

+0

我修改了我的答案中的條件檢查。 –

+0

它仍然無法正常工作 –