2012-01-11 10 views
5

Estoy usando controles de formulario uniformes que funcionan excepto el menú de lista. Cuando agrego el símbolo '&' (&) en el menú de la lista, se representa correctamente, pero aparece un problema cuando cambio el valor a diferente valor y selecciono nuevamente el valor que tiene & simbolo & en su lugar '&' en el menú de lista. enter image description herenecesito ayuda en jquery unformjs seleccione menú '&' codificación de caracteres

enter image description here

<select> 
<option>Through &amp; Google</option> 
<option>Through Twitter</option> 
<option>Other&hellip;</option>   
<option>&lt;Hi&gt;</option> 
</select> 

http://uniformjs.com/#example

puede alguien decirme cuál es el problema ..

+0

¿El ampersand es represado como una entidad en el marcado? ''? –

+0

@Didier G. I se trató en ambos sentidos y , pero tanto el problema todavía conserva .. – Ravi

Respuesta

3

Creo que el problema podría venir de esta línea (source - línea 185):

spanTag.text(elem.find(":selected").html()); 

Si tiene el código HTML siguiente:

<select> 
    <option>One &amp; Two</option> 
    <option>One & Two</option> 
</select> 
  1. El plugin obtiene el contenido como html haciendo elem.find(":selected").html()

    Tanto elemento de opción devolverá este valor al conseguir html: One &amp; Two caracteres especiales están representado por entidades html (&amp; para & en nuestro ejemplo)

  2. y luego complemento se aplica este resultado como texto usando spanTag.text(<html>);

    entidades html Así no se deje analizados (&amp; se muestra como &amp;)

Esto ilustra que fiddle.

No creo que hay una solución para que, a excepción de no utilizar caracteres especiales como & ...

4

Según Didler, ¿por qué no modifican las uniformjs un poco?

Me he encontrado con el mismo escenario recientemente, y le agradezco a Didler que me indique la línea exacta que me ahorra un montón de tiempo para localizar el lugar.

En mi caso, tengo una selecta con valor consiste en caracteres especiales, tales como:

<option>aaa</option> 
<option><a>bbb<br>ddd<hr>ccc</option> 

Así que puedo modificar el código en la línea 185 a:

spanTag.text(elem.find(":selected").text()); 

que resuelve el problema que cuando renderiza el valor está en una forma correcta.

En el escenario de op, no estoy seguro de que el lenguaje del lado del servidor que está utilizando, pero definitivamente no es una forma de escapar del texto dentro de la opción antes de generar la página HTML de modo que no hay &amp; en su html pero el carácter sí mismo. Estoy usando Java para poder simplemente usar JSTL <c:out value="${******}"/> para poner el valor en la etiqueta de opción.

+0

estoy usando la fusión en frío para generar esta opción – Ravi

4

Hay una solicitud de extracción (130) que actualiza 4 líneas de código (líneas 173, 185, 212 y 569) para que en lugar de usar .html() utilicen .text(). Las dos solicitudes de extracción posteriores que vi no parecen actualizar las 4 líneas.

Si desea actualizar la versión minified así, puede buscar estos dos fragmentos:

  • l.html(n.html() (x1 - cambiar segunda instancia de 'html')
  • :selected").html( (x3 - cambiar sólo instancia de 'html')
+0

eso es una gran sugerencia @ James, esta trabajado para ¡yo! Gracias. –

Cuestiones relacionadas