destacados

Gabriel Da Silva

Portafolio del ilustrador y director de arte brasileño, aunque afincado en Madrid, Gabriel Da Silva.

B&W Helmut Newton

Selección de fotografías en blanco y negro de uno de los fotógrafos más conocidos de las últimas décadas, Helmut Newton.

Judith Erwes

Fotógrafa afincada en Londres con un estilo que combina la moda, el humor y la estética retro.

Jody Rogac

Nacida en Inglaterra y criada en Canadá, Jody Rogac en la actualidad vive y trabaja en Brooklyn. Sus trabajo ha obtenido diversos galardones.

Publicaciones

Redimensionar un textarea con Prototype

, , 18/01/2007 09:34:29

Para un proyecto en el que estoy trabajando, que tiene bastantes textareas, necesitaba una forma de optimizar el espacio disponible. Así que navegando por internet, y buscando posibles alternativas -a ser posible que utilizasen Protoype-, me encontré con esta opción de redimensionar textareas dinamicamente con Ajax. Modifiqué ligeramente el código para ajustar el redimensionamiento un poco mejor y la verdad es que me permite optimizar mucho mejor el espacio en la retícula. Los textarea únicamente ocuparán el espacio del texto que contienen.

Ver Ejemplo en funcionamiento » »

Para utilizarlo hay que:

1.- Descargarse Prototype y hacer el enlace oportuno en nuestra web:

<script language="javascript" src="Prototype.js"></script>

2.- Dentro de la etiqueta <head> insertar el siguiente código:

var RedimenTextArea = Class.create();

RedimenTextArea.prototype = {
    FilasDefecto: 1,

    initialize: function(field)
    {
        this.FilasDefecto = Math.max(field.rows, 1);
        this.redimensiona = this.redimensiona.bindAsEventListener(this);
        Event.observe(field, "click", this.redimensiona);
        Event.observe(field, "keyup", this.redimensiona);
    },

    redimensiona: function(event)
    {
        var t = Event.element(event);
        var lineas = t.value.split('\n');
        var FilasAhora = lineas.length-1;
        var FilasAntes = t.rows;
        for (var i = 0; i < lineas.length; i++)
        {
            var linea = lineas[i];
            if (linea.length >= t.cols) FilasAhora += Math.floor(linea.length / t.cols);
        }
        if (FilasAhora > t.rows) t.rows = FilasAhora;
        if (FilasAhora < t.rows) t.rows = Math.max(this.FilasDefecto, FilasAhora);
    }
}

Descargar Ejemplo » »

Páginas: 1
comentarios