2011-10-17 7 views
20

Tengo un problema con caracteres especiales como &, A, etc., y su correspondiente escritura codificada HTML como &, etc. äJavascript/jQuery codificación de los caracteres especiales cuando se utiliza val()

  • Cuando se utilizan en la etiqueta de valor de los campos de entrada, el navegador lo decodifica automáticamente, sin problema alguno.

  • Cuando se utiliza la función jQuerys val(), el navegador no tiene ninguna posibilidad de evaluar el contenido correctamente

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

Alguna idea?

+1

En realidad, no hay codificación ni descodificación cuando utiliza el método 'val'. Si tiene un valor inicial en el campo, se decodifica cuando se analiza el HTML, no cuando se lee el valor. ¿Por qué necesitarías usar valores codificados en HTML aquí en primer lugar? – Guffa

+0

Porque quiero ingresar datos en los campos de entrada de forma dinámica (en función de un cuadro de selección desplegable, donde selecciona el conjunto de datos). Y los datos insertados aquí tienen que ser seguros para XSS. – 1jr

+0

Lo estás haciendo mal. El uso de una codificación arbitraria no hace que el código sea más seguro, pero menos, debe codificar el valor correctamente para cómo se va a usar. Si coloca el texto en una cadena literal, debe codificarse para ese fin, no codificado en HTML. – Guffa

Respuesta

4

Trate .html() función:

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

Puede utilizar esta antiquísima decodificación entidad truco:

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

demostración de trabajo: http://jsfiddle.net/AndyE/XegGy/

Se crea una temporalElemento, establece su HTML en &amp; y luego obtiene el valor de texto, que será &.

Cuestiones relacionadas