2013-02-15 158 views
0

我有一個場景,我使用自動完成jquery UI與textarea。每次用戶從建議中選擇一個值時,textarea都會填入選擇後跟分號。在文本區域隱藏HTML標籤

我需要跟蹤建議中選定值的ID。我的想法是讓他們在span標籤的數據屬性中包裝選定的值並填充textarea.But現在textarea正在顯示這些HTML標籤。

有什麼建議應該做什麼?

+0

當您選擇的標籤來實現所以,像類似於在這裏自動完成一個問題。我總是將ID保存在隱藏文本字段中以便在提交時使用。如果需要的話,我會向用戶顯示一些圖形,html等,以便他們可以看到他們選擇並在必要時刪除。你是這個意思嗎? – Leeish 2013-02-15 04:12:23

+0

是的,我也可以在稍後檢索該ID。如果保存到隱藏的文本字段,那麼很可能是我在這裏失去了選擇和ID之間的映射。 – remo 2013-02-15 04:15:25

+0

那我就是這麼做的。這樣,你正在分解你的設置和數據方面的視覺方面。在自動完成的選擇方法我只是運行我的「保存到隱藏的領域」功能和我的「創建反饋功能」。這看起來很乾淨,直截了當。我不喜歡試圖從注入的代碼中解析ID等。 – Leeish 2013-02-15 04:17:51

回答

0

簡單實現此目的並保持您的ID正確的最佳方法(當您需要將東西打開以便用戶可以自由輸入時)是在您需要時而不是在之前獲取ID。我的意思是允許用戶自動完成並選擇或手動輸入,但是在您使用該數據執行某些操作時,您會爲列表中的每個項目獲取ID。

<textarea>Item 1; Item 2; Manual Item 3;</textarea> 

然後在提交點說(甚至在服務器端)你再拆你的清單,並做了基於名字的每個ID的樣子。這將自動防止用戶做這樣的事情的Item 1手動修改,或者說重新排序列表:

<textarea>Item 42; Item 2; Manual Item 3;</textarea> 

通過上面的例子,因爲在列表中的每個項目重新審問了它的ID,你需要它之​​前,將使用Item 42而不是Item 1。如果你有任何其他形式的ID跟蹤,那麼無論如何你都必須檢查這個可能性,這將導致整個堆的額外代碼和工作。

當您在提交時檢查ID時,您唯一需要做的額外工作就是如果您想爲尚不存在的項目發生任何特殊事件。但是,最有可能的是,您需要使用專門跟蹤ID的系統來執行此操作。

如果您擔心優化問題,您可以始終使用名稱作爲查找鍵並將值作爲ID(在用戶自動完成時返回)。然後在用戶完成時使用這個哈希填充ID列表。

/// create your lookup object 
lookup = {}; 

/// store in the lookup 
lookup[name] = id; 

/// then after a few selections you'll end up with an object like so: 
{ 
    'Item 1': 1, 
    'Item 2': 2, 
    'Item 42': 42 
}; 

顯然,你可能會想考慮上名字的小寫的可能性,但可以用.toLowerCase()