2013-07-07 24 views
4

改變textarea的井號標籤的顏色我要讓散列標籤上的textarea像#hash這我如何的jQuery

<textarea> hi #hash </textarea> 

和改變顏色像Twitter

+0

爲什麼'textarea'?它應該在用戶輸入文字時動態改變顏色嗎? –

回答

7

我做了一個插件,因爲我有同樣的問題。 看這裏:http://lookapanda.github.io/jquery-hashtags/

+0

支持@符號 – Sorter

+0

在當前狀態下,不,它不支持。也許我會更新它或有人提出拉取請求。但我沒有時間開發它的atm。 –

+0

它似乎支持@現在,剛剛實施。感謝西蒙! – Laser

1

你不能做一個<textarea> 。您需要在<div>中執行此操作,並編寫一組鍵盤處理程序,以便在用戶鍵入內容時更新內容。這不是一個簡單的任務。看看使用類似CKEDITOR的東西,雖然我懷疑這不是你的工作的工具。

1

由於textareas不支持允許您爲特定單詞或表達式着色的標記,因此您需要做的是創建一個<div>,您可以將關鍵事件綁定到javascript或jQuery中。通過使用這個keyup事件,你可以將輸入的字母插入div,就好像有人在文本區域輸入一樣。接下來,要爲特定的hashtag着色,您需要創建一個正則表達式,然後使用replace函數將其包裝在<a>標記中,並添加所有必要的屬性。

我發現這個很酷的教程上解析類似Twitter的用戶名和#標籤:http://www.simonwhatley.co.uk/parsing-twitter-usernames-hashtags-and-urls-with-javascript

+0

我認爲使用多個現有編輯器中的一個比嘗試構建自己的編輯器更好,尤其是在人們用於文本輸入的鍵盤快捷鍵周圍的所有複雜性方面。 –

+0

是的,我絕對同意。我更喜歡使用已經存在的庫,如果它們服務於我的目的,而不是重新發明輪子。 – jrthib

3

一個簡單的建議(未測試):

正如你無法格式化文本區域,您可以通過使用一個div模仿它與contenteditable屬性和一個簡單的CSS格式:

<div id='textarea' contenteditable style="overflow: scroll; border: 1px solid black; width: 200px; height: 100px;"></div> 

然後,JavaScript的(和jQuery)的幾行:

// when user finished editing 
$('#textarea').blur(function() { 
    // replace hashtags (parsing should prob. be enhanced) 
    $(this).html($(this).html().replace(/(#\S+)/, '<span style="color: blue">$1</span>'); 
}); 
+0

請注意'contenteditable'很容易產生一些詳細的html(取決於瀏覽器),特別是如果用戶粘貼某些東西。 –

+0

我試試

但我想讓它textarea的 –

+0

@MahmoudSamy正如我上面提到的,它是不** **可能的做用HTML的''