2012-05-22 16 views
5

Estoy cargando texto en un cuadro de entrada a través del $("textarea").val(ajaxData);, pero no crecerá automáticamente, y mis datos no se muestran por completo. ¿Hay algún método o algo que pueda llamar para forzar una actualización?jQuery Área de texto en crecimiento móvil con datos AJAX

+2

Publique su CSS, javascript y HTML; probablemente su problema se deba a su CSS. –

+0

No tengo ningún CSS personalizado, esto es para un cuadro de texto normal. la única diferencia es que la entrada no proviene del teclado, sino de la fuente de datos ajax. Entonces debe haber una función para hacer esto en jQM, simplemente no sé cuál es. – Astronaut

Respuesta

11

De hecho, hay una función interna que se encarga de redimensionar, llamada resizeCheck(). Sin embargo, esa función es un detalle de implementación privada y no está expuesta por el widget como método público.

Puede solucionar este problema, sin embargo: desde resizeCheck() es llamado por controlador de eventos del widget keyup, puede desencadenar ese evento a sí mismo después de establecer el nuevo valor:

$("textarea").val(ajaxData).keyup(); 

Esto cambiará el tamaño del widget en la exacta De la misma manera que si hubiera escrito el nuevo texto "a mano".

+0

Gracias de nuevo Frédéric, me has ahorrado horas de búsqueda. ¡Funciona perfecto! :) Sin embargo, una vez que el campo crezca, no volverá ... encontré este comportamiento haciendo ediciones manuales también. ¿Hay alguna manera de restablecer este campo a la normalidad? ¿Podría ser esto un error? – Astronaut

+0

@ Adam, esto es de hecho un error. [Error # 2719] (https://github.com/jquery/jquery-mobile/issues/2719), para ser específico. –

+0

Gracias una vez más por sus comentarios. Creo que fusionaré el complemento elástico, es un fastidio ya que quería usar el CDN en lugar de un jQuery local. – Astronaut

0

Debe especificar una altura: 'auto' en su elemento contenedor mediante CSS.

Si escribió una altura estática, no crecerá automáticamente.

1
var offset=15; 
$("textarea").val(ajaxData); 
$("textarea").height($("textarea").innerHeight() + offset) 

Puede probar sin ningún desplazamiento si funciona en su caso. También puede cambiar el valor de compensación si es necesario

+0

Hola, gracias por esta solución. Sin embargo, me preguntaba si alguien sabe qué función es llamada internamente por jQM para hacer esto con el texto de entrada habitual. si lo escribe, crece automáticamente, pero no con datos ajax. – Astronaut

+0

Hola Imdad would innerHeight dame el valor del texto? ¿Puedo usar esto para hacerlo elástico? ¿Crecer y encogerse? – Astronaut

+0

innerHeight le dará la altura del contenido interno. Por lo tanto, puede crecer/reducir en consecuencia. Para obtener valor o usar el texto real '$ (" textarea "). Val()' – Imdad

Cuestiones relacionadas