2011-10-17 127 views
20

我有特殊字符,如&,A等的問題及其相應的HTML編碼寫入像&ä的Javascript/jQuery的編碼特殊字符

  • 當他們在輸入字段的值標記中使用,瀏覽器自動解碼,完全沒有問題。

  • 當使用jQuerys VAL()函數,瀏覽器一直沒有機會來評估內容正確

    $("button").click(function(){ 
        $("#test").val("&"); 
    }); 
    

任何想法?

+1

當您使用'val'方法時,實際上沒有進行編碼或解碼。如果在字段中有初始值,則在解析HTML時解碼,而不是讀取值時解碼。爲什麼您首先需要在這裏使用HTML編碼值? – Guffa

+0

因爲我想動態地在輸入字段中輸入數據(基於下拉選擇框,選擇數據集的位置)。這裏插入的數據必須是XSS安全的。 – 1jr

+0

你做錯了。使用一些任意的編碼不會使代碼更安全,但更少,您應該正確地編碼該值以便如何使用它。如果您將文本置於字符串文本中,則應將其編碼爲此目的,而不是HTML編碼。 – Guffa

回答

4

嘗試.html()功能:

$("#test").html("&"); 
30

你可以使用這個古老的實體解碼招:

$("button").click(function(){ 
    $("#test").val($("<div>").html("&amp;").text()); 
}); 

工作演示:http://jsfiddle.net/AndyE/XegGy/

它創建一個臨時<div>元素,將其HTML設置爲&amp;,然後獲取文本值,其值爲&