5

Quiero enviar un carácter especial html al campo de texto y luego usar javascript para recuperarlo en su formato original: como si envié "& pi", will muestra "π" en la entrada de texto, y cuando uso javascript para recuperarlo, debería obtener "& pi", pero solo puedo obtener "π", no "& pi". Por favor ayuda, mi código es el siguiente:Cómo usar javascript para obtener caracteres especiales html en la entrada de texto

<script type="text/javascript"> 
function qpush(a) { 
    document.getElementById('input').value += a; 
} 

function show(a) { 
    alert(document.getElementById('input').value); 
} 
</script> 

<input type="text" id="input" /> 
<input type="button" onclick="qpush('&pi;');" value="&pi;" /> 
<input type="button" onclick="show()" value="go" /> 

Respuesta

3

Dependiendo de lo que necesita el que para usted podría hacer una de las 3 opciones:

  1. utilizan el escape javascript y unescape funciones:

    var escaped = escape ('π') // escaped = "% u03C0" que unescape volverá a ser π

  2. Si tiene jQuery disponible es el método html puede hacer el truco:..

    $ ('input') val() html()

  3. Este es un truco, pero funcionará: Guardar una copia del valor de la forma que desee devuelto en un atributo 'data-' del elemento de entrada, esto se validará en html5 y no se dividirá en otros tipos de documento.

    document.getElementById ('input'). SetAttribute ('data-OriginalValue', '& pi')

+0

Gracias por la ayuda, utilizo el formulario escapado para datos, y el formulario no escaneado para mostrar, funciona bien. – kli

+0

Genial, me alegro de ser de ayuda :) – Lior

+0

Por cierto, si te gusta mi respuesta, ¿puedes votarla por favor? – Lior

1

La propiedad value le dará el texto, no HTML.

Usted podría intentar getAttribute('value') pero desde &pi; y π son idénticamente equivalente en HTML, el navegador tiene total libertad para volver π para eso también.

Una vez que el HTML se ha convertido en un DOM, no hay forma de acceder al HTML original (excepto descargar el HTML de nuevo con XHR y analizar el texto sin procesar del mismo).

Si desea que los datos sean "&pi;", el código HTML debe ser &amp;pi;.

Si quiere eso y la representación en el botón que se π entonces usted necesita:

<button type="button" value="&amp;pi;">π</button> 

(Teniendo en cuenta los diversos errores que la vieja es decir, tiene con el elemento de botón)

Eso mostrará, por supuesto, &pi; cuando copie el valor a la entrada de texto.

+0

Gracias por su ayuda, pero document.getElementById ('input'). GetAttribute ('valor') devuelve nulo. – kli

+0

Oh, echaba de menos que este era un elemento diferente del que obtenías el valor. 'getAttribute' devuelve el valor del atributo (que es el valor predeterminado de la entrada), no el valor actual. – Quentin

0

Utilice esta opción para reemplazar todas las apariciones del personaje:

document.getElementById('input').value.replace(/π/g,"&pi;"); 
+0

buena solución, pero tengo que hacerlo para todos los caracteres especiales, no solo para π. – kli

+0

@KelvinLi Puede mantener una matriz de asignaciones de entidades especiales ejecutando el reemplazo. – Christoph

+0

Lo intenté, pero parece que replace() no puede usarse para caracteres muy especiales como π. – kli

Cuestiones relacionadas