2008-09-29 22 views
22

¿Cómo implementa Stackoverflow el área de texto redimensionable?Implementando un área de texto redimensionable?

¿Es eso algo que ellos mismos lanzaron o es un componente disponible públicamente que puedo adjuntar fácilmente a las áreas de texto de mis sitios?

Encontré esta pregunta y no hace exactamente lo que quiero.

autosizing-textarea

Eso habla más sobre el cambio de tamaño de forma automática áreas de texto mientras que yo quiero la pequeña asir-área que puede arrastrar hacia arriba y abajo.

Respuesta

25

StackOverflow utiliza un complemento jQuery para lograr esto: TextAreaResizer.

Es bastante fácil de verificar esto, simplemente extraiga the JS archivos del sitio.

Nota histórica: cuando esta respuesta fue escrito originalmente, ADM y TextAreaResizer eran dos plugins separados, ninguno de los cuales fue escrito por el Dev Team SO (véase también: micahwittman's answer). Además, el JavaScript para el sitio fue bastante fácil de leer ... Ninguno de estos son estrictamente verdadero ya, pero TextAreaResizer sigue funcionando bien.

+0

Interesante. Me pregunto si hay un prototipo equivalente. –

+0

Solo en caso de que alguien se lo pregunte también: http://scottmoonen.com/2008/07/08/unobtrusive-javascript-expandable-textareas/ – mplungjan

+1

Lamentablemente, el enlace a UserVoice está muerto (ya que SO ya no lo usa) . Sería interesante ver la discusión para ver lo que la gente pensaba sobre esto (cambio de tamaño manual vs. cambio de tamaño automático). –

4

Al principio creí que era una característica incorporada del Wysiwym Markdown editor, pero Shog9 es correcto: no está en absoluto horneado, pero es cortesía del plugin jQuery TextAreaResizer (el navegador me extravió por completo) para comprobar en editor demo porque Google Chrome mismo agrega la funcionalidad ampliable en textareas — de forma muy similar al navegador Safari).

+0

Um ... no, no lo es. – Shog9

+0

Shog9 está justo en. Esto no está en absoluto en el editor de WMD. –

+0

Nice edit. Eliminé mi voto negativo. –

11

Necesité una funcionalidad similar recientemente. Se llama Autogrow y es un complemento de la increíble biblioteca jQuery

+3

¡Este supera a todos los demás que he probado! ¡Muy recomendable! – Ryall

+1

Parece que el enlace al crecimiento automático está roto. El correcto es: http://plugins.jquery.com/project/autogrowtextarea – dpavlin

+0

Este está bien. – San

0

Uso AngularJS:

angular.module('app').directive('textarea', function() { 
    return { 
    restrict: 'E', 
    controller: function($scope, $element) { 
     $element.css('overflow-y','hidden'); 
     $element.css('resize','none'); 
     resetHeight(); 
     adjustHeight(); 

     function resetHeight() { 
     $element.css('height', 0 + 'px'); 
     } 

     function adjustHeight() { 
     var height = angular.element($element)[0] 
      .scrollHeight + 1; 
     $element.css('height', height + 'px'); 
     $element.css('max-height', height + 'px'); 
     } 

     function keyPress(event) { 
     // this handles backspace and delete 
     if (_.contains([8, 46], event.keyCode)) { 
      resetHeight(); 
     } 
     adjustHeight(); 
     } 

     $element.bind('keyup change blur', keyPress); 

    } 
    }; 
}); 

Esto transformará todas sus áreas de texto para crecer/encogerse. Si solo desea que las áreas de texto específicas crezcan o se encojan, cambie la parte superior para que se lea así:

angular.module('app').directive('expandingTextarea', function() { 
    return { 
    restrict: 'A', 

Espero que ayude!

-1

qué pasa con esto, su trabajo

<textarea oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea> 
+0

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. –

Cuestiones relacionadas