回答
我做了一個插件,因爲我有同樣的問題。 看這裏:http://lookapanda.github.io/jquery-hashtags/
你不能做一個<textarea>
。您需要在<div>
中執行此操作,並編寫一組鍵盤處理程序,以便在用戶鍵入內容時更新內容。這不是一個簡單的任務。看看使用類似CKEDITOR的東西,雖然我懷疑這不是你的工作的工具。
由於textareas不支持允許您爲特定單詞或表達式着色的標記,因此您需要做的是創建一個<div>
,您可以將關鍵事件綁定到javascript或jQuery中。通過使用這個keyup事件,你可以將輸入的字母插入div,就好像有人在文本區域輸入一樣。接下來,要爲特定的hashtag着色,您需要創建一個正則表達式,然後使用replace
函數將其包裝在<a>
標記中,並添加所有必要的屬性。
我發現這個很酷的教程上解析類似Twitter的用戶名和#標籤:http://www.simonwhatley.co.uk/parsing-twitter-usernames-hashtags-and-urls-with-javascript
我認爲使用多個現有編輯器中的一個比嘗試構建自己的編輯器更好,尤其是在人們用於文本輸入的鍵盤快捷鍵周圍的所有複雜性方面。 –
是的,我絕對同意。我更喜歡使用已經存在的庫,如果它們服務於我的目的,而不是重新發明輪子。 – jrthib
一個簡單的建議(未測試):
正如你無法格式化文本區域,您可以通過使用一個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>');
});
請注意'contenteditable'很容易產生一些詳細的html(取決於瀏覽器),特別是如果用戶粘貼某些東西。 –
我試試
但我想讓它textarea的 –@MahmoudSamy正如我上面提到的,它是不** **可能的做用HTML的''
我認爲CodeMirror或類似的編輯器可以解決您的問題 - 只需添加自定義熒光筆。唯一的事情是編輯器應該支持可變寬度的字體,但我認爲CodeMirror支持。
如果你只是想突出textarea文本是沒有問題的 - 在這種情況下,jquery-hashtags做得很好。
但是,改變文本的顏色是另一件事,因爲你不能直接設置textarea的樣式。我已成功聯合,有點哈克的解決方案來完成它:
- 首先,你必須使用
<div>
與屬性contenteditable
而不是<textarea>
可自動突出顯示文本,必須包裝所有#hashtag提到另一個內聯html元素,你可以例如
<span style="...">
。正則表達式很好的伎倆在這裏://Bind this on keyup event var text = text.replace(/<\/?span>/g, '').replace(/([#]+[A-Za-z0-9-_]+)/g, '<span>$1</span>');
但是在文本替換KEYUP產生了另一個問題 - 所以這幾乎是不可能鍵入它重置您的文本光標。爲了解決這個問題,Rangy來幫忙。它是文本選擇庫,提供了一些實用程序來處理文本字段中的光標位置。要將光標保持在原位,必須在應用文本替換之前將其保存,並在發生後重置它。下面是完整的代碼:
$("#notes-editor").on("keyup", function(){ var text = $(this).html(); text = text.replace(/<\/?span>/g, '').replace(/([#]+[A-Za-z0-9-_]+)/g, '<span>$1</span>'); savedSel = rangy.getSelection().saveCharacterRanges(this); $(this).html(text); rangy.getSelection().restoreCharacterRanges(this, savedSel); });
我知道你回答這一個,但如果有人仍想比,則明顯的答案以外的不同的解決方案,請check this link。希望它可以幫助未來的人...
- 1. 我如何在jQuery的
- 2. 我如何寫jQuery的
- 3. 我如何通過jQuery的
- 4. 我如何通過JQuery的
- 5. 我如何逃脫的jQuery
- 6. 我如何能在jQuery的
- 7. 我如何通過JQuery的
- 8. 如何簡化我的jQuery?
- 9. jQuery我如何解決jQuery的衝突
- 10. 我如何給我的導航jQuery
- 11. jQuery:我如何使用「$」而不是「jQuery」?
- 12. 我如何使這jQuery的工作如何我想?
- 13. 我如何使用jQuery
- 14. 我如何找到#與jQuery?
- 15. 我如何使用jQuery
- 16. 我如何使用jQuery
- 17. 我如何從jQuery中
- 18. 我如何使用jQuery
- 19. 我如何刪除jquery
- 20. 我如何從jQuery中
- 21. 我如何使用jQuery
- 22. 我如何使用JQuery
- 23. 我如何在jQuery中
- 24. 我如何使用jQuery
- 25. 如何我使用jQuery
- 26. jQuery - 我將如何替換
- 27. 我如何讓jQuery中
- 28. 我如何使用Jquery
- 29. 我如何使用jQuery
- 30. 我如何使用jQuery
爲什麼'textarea'?它應該在用戶輸入文字時動態改變顏色嗎? –