2012-08-09 30 views
0

編輯來讓我實際的目標更清晰...使用jQuery插入呈現的HTML的文本字段

不知道這甚至有可能沒有很多的努力...

我有一個文本字段,我的用戶將輸入評論。我想通過用@符號預先標記名稱來啓用標記。我已經將一些輪詢文本字段的jQuery函數放在一起,等待輸入@符號,然後使用正則表達式來獲取@符號後面的文本,並返回匹配用戶列表。這一切都很好。

我的問題出現在用戶選擇其中一個結果時 - 我想用某種格式化文本替換文本字段中的「@username」。我們的目標是提供 一種在文本框中直觀地區分用戶名的方式,以便用戶知道它已被正確處理爲標籤。有什麼方法可以在文本字段中使用任何類型的格式?或者是否有另一個我可以使用的表單元素支持這個?

感謝

更新: 搜索的時候,我發現這樣一個問題:jQuery textbox and html

它推薦給筆者,他用一個div來顯示豐富的HTML,並使用一個隱藏的輸入捕捉來自用戶的文本。我想我可以使用AJAX抓取文本字段上的每個按鍵,並用內容更新div,但是這會帶來很多開銷嗎?在這種情況下,任何其他解決方案都有意義嗎?

+1

我個人很喜歡它是如何做的......它只是把它留作文本「@Username」。然後它仍然是可編輯的並且是合理的。 – 2012-08-09 19:40:09

+0

您是否考慮過在後端而不是前端應用鏈接?例如你的評論被存儲爲「blah blah @will blah blah」,但是當你通過PHP打印評論時,或者你不能做一個preg_replace並插入適當的鏈接。更有效,可防止用戶插入惡意鏈接,整體效果更佳。 – Will 2012-08-09 19:43:23

+0

@StefanH - 我同意,但不幸的是,客戶希望它「讓用戶清楚」文本被識別爲標籤。我仍然試圖說服他們,這是值得的更麻煩,但我想我會看看是否有一個簡單的解決方案,我沒有想到... – Jim 2012-08-09 19:43:35

回答

0

您的問題100%正確。

捕獲擊鍵肯定是正確的方法,但他們實施方式將決定開銷。

我建議等待,直到你捕獲@符號,然後是X個字符,然後是空格。一旦你閱讀了空間,你可以發送一個AJAX請求。

除非用戶輸入百萬@標籤,否則我無法想象它會有很多請求。

請記住一些應用程序每秒輪詢一次服務器數次,這將少得多。

+0

我已經說服客戶放棄這個「功能」,只是把標籤留在文本框中。然後我把它們換成jQuery提交的鏈接。但是,如果我確實需要在文本框中顯示任何類型的格式,看起來這將是最好的解決方案。謝謝 – Jim 2012-08-14 18:41:57

+0

沒問題=) – 2012-08-14 19:11:08

-1

請嘗試這樣。

var text = '<a href="users/username">username</a>' 
var o = $(text); 
+0

這只是在OP中提供了一個javascript對象的錨點對象,這並沒有解決任何他們的實際問題。 – 2012-08-09 19:45:59

0

吉姆,我剛剛將這留作評論,但我還不能這樣做。我不得不做類似的事情,並使用輕量級的wysiwyg編輯器來做到這一點。這可能是你的情況矯枉過正,但也許有一些東西需要研究。

相關問題