¿Cómo puedo obtener un área de texto para inicialmente tener solo 1 fila, pero luego cuando el texto llega al final de la fila para agregar otra fila y seguir haciendo esto hasta un máximo de 5 filas?Expandir un área de texto en función de la cantidad de texto que contiene (jquery)
Respuesta
Algo como esto:
<textarea id="foo" rows="1" cols="40"></textarea>
$(function() {
$("#foo").on("keyup", function() {
if ($(this).attr('rows') < 5 &&
parseInt($(this).val().length/$(this).attr('cols')) >= $(this).attr('rows'))
$(this).attr("rows", parseInt($(this).attr("rows"))+1);
});
});
edición Ligeras mejoras para manejar los saltos de línea:
$(function() {
$("#foo").on("keyup", function (e) {
if ($(this).attr('rows') < 5)
{
if (
parseInt($(this).val().length/$(this).attr('cols'))+
($(this).val().split("\n").length-1)
>=
$(this).attr('rows')
)
$(this).attr("rows", parseInt($(this).attr("rows"))+1);
if (e.keyCode == 13)
{
$(this).attr("rows", parseInt($(this).attr("rows"))+1);
}
}
});
});
Compruebe el elástico jQ uery plugin: http://unwrongest.com/projects/elastic/
Puede usar la propiedad max-height en su CSS combinada con la longitud máxima de su área de texto para limitarla a 5 líneas.
descargar este plugin: http://james.padolsey.com/demos/plugins/jQuery/autoresize.jquery.js
$('textarea#comment').autoResize({
// On resize:
onResize : function() {
$(this).css({opacity:0.8});
},
// After resize:
animateCallback : function() {
$(this).css({opacity:1});
},
// Quite slow animation:
animateDuration : 300,
// More extra space:
extraSpace : 40
});
This A List Part article da una descripción detallada, paso a paso sobre cómo implementar mejor esta funcionalidad.
Tomé la idea de la respuesta de Jake Feasel y no solo funciona para expandir sino también para contratar el área de texto en caso de que haya un menor contenido.
HTML
<textarea id="foo" rows="1" cols="40"></textarea>
<div id="stat"></div>
También muestra el número ideal de filas requerido de acuerdo con el contenido en un div sepatate
CSS
#foo
{
resize:none;
}
Esto es necesario porque, una vez que el área de texto tiene se ha redimensionado utilizando este controlador, el código deja de funcionar
JS
$(function() {
$("#foo").on("keyup", function (e) {
var idealRows = parseInt($(this).val().length/$(this).attr('cols'))+
($(this).val().split("\n").length-1)+1 ;
var rows = $(this).attr('rows');
// for the bugging scroll bar
if(rows > 4) $('#foo').css('overflow','auto')
else $('#foo').css('overflow','hidden')
// for expanding and contracting
if((idealRows > rows) && (rows < 5) || (idealRows < rows) && (rows > 1))
$(this).attr("rows", idealRows);
});
});
Demostración: http://jsfiddle.net/roopunk/xPdaP/3/
Tenga en cuenta que también se encarga de la barra de desplazamiento que aparece entre keyDown y keyUp. OMI: Es un poco molesto.
Nota Espero que esto ayude! :)
- 1. jQuery ajustar el texto seleccionado en un área de texto
- 2. Capturar texto pegado en un área de texto con JQuery
- 3. de entrada: Texto + selector de área de texto en jQuery
- 4. jquery área de texto de crecimiento automático versus texto inicial
- 5. Hacer texto seleccionable en un área de texto dentro de un padre ordenable jQuery
- 6. en el área de texto con jQuery
- 7. Creación de un área de texto falso
- 8. Obtener texto seleccionado en la página (no en un área de texto) con jQuery
- 9. Jquery fadeout texto en un cuadro de texto y texto
- 10. jQuery Arrastrar y colocar en un área de texto
- 11. jQuery: establece el ancho de un área de texto?
- 12. jQuery Escapar HTML a partir de un área de texto
- 13. Modo de empleo: contiene (texto) con cualquier texto con jQuery
- 14. Cómo bloquear la primera palabra de un área de texto?
- 15. Texto en cursiva que contiene un enlace
- 16. ¿Cómo puedo incrustar un área de texto dentro de otra área de texto en HTML?
- 17. selector jQuery para un elemento que contiene texto directamente?
- 18. Limitar palabras en un área de texto
- 19. Reemplazar el texto seleccionado en el área de texto
- 20. Onclick Expandir ancho del cuadro de texto
- 21. creando un área de texto con javascript
- 22. ¿cómo llenas un área de texto con jquery y linebreaks?
- 23. Resaltar texto dentro de un área de texto
- 24. jquery: ¿cómo recorre cada línea nueva de texto escrito dentro de un área de texto?
- 25. Jquery para poblar la entrada o el área de texto
- 26. Buscar la siguiente área de texto usando jQuery
- 27. Cómo insertar texto en la posición actual de intercalación en un área de texto
- 28. Desactivación de Área de texto de CSS
- 29. jQuery - encontrar la fila de la tabla que contiene la celda de la tabla que contiene texto específico
- 30. representación HTML dentro de área de texto
lo que si el usuario hace clic entran? El cuadro de texto no se expande. – codedude
Sí, supongo que eso sería un problema. detalles detalles. :) –
¿Es una solución fácil de permitir ingresar para expandir el área de texto? – user852974