2011-08-23 16 views
2

我創建類似於編輯就地插件一個小功能。處理與(使用jQuery)其值內HTML一個輸入

作用:

  • 得到上點擊一個元素的HTML內容:var editable = $(this).html();
  • 創建文本輸入框(或獲取它,如果它存在的話):

    var input = ($('input', this).length > 0) ? $('input', this) : $('<input type="text" value="' + editable + '" />'), 
    
  • 替換輸入元素文本:$(this).empty().append(input);

這工作,但只有在可編輯的文本中不包含非編碼的HTML字符。

如果有HTML字符,如<>,他們被轉換在第2步到HTML代碼,擾亂了輸入元素...

我試圖用逃離他們:

editable = $('<div/>').text($(this).html()).html()

但後來我得到逃出HTML文本輸入笑:)

我能做些什麼?

+0

,真正重要的是'「,因爲它會關閉你的價值=‘’屬性的字符。你必須非常小心然而XSS注入 –

+0

請其託管在的jsfiddle – Baz1nga

+0

是'「'似乎是問題,因爲後面的所有文字沒有按;噸秀.. – Alex

回答

2

您可以HTML轉義的字符串,以便它可以被包含在一個像這樣的HTML屬性值:

var escaped = string.replace(/</g, '&lt;').replace(/'/g, '&#39;').replace(/"/g, '&#34;'); 
+0

工作感謝。我現在在不同的地方有問題,但我認爲我可以修復它們:) – Alex

相關問題