Implementacja pola tekstowego z możliwością zmiany rozmiaru?

Jak Stackoverflow implementuje zmienną textarea?

Czy jest to coś, co sami zwijali, czy jest to publicznie dostępny komponent, który mogę łatwo dołączyć do textareas na moich stronach?

Znalazłem to pytanie i nie do końca robi to, co chcę.

Autosizing-textarea

To mówi więcej o automatycznej zmianie rozmiaru tekstu, podczas gdy ja chcę mały obszar grab, który można przeciągnąć w górę iw dół.

Author: Community, 2008-09-29

5 answers

StackOverflow używa do tego celu wtyczki jQuery: TextAreaResizer .

Łatwo to zweryfikować - wystarczy wyciągnąć Pliki JS ze strony.

Uwaga historyczna: Kiedy odpowiedź była oryginalnie napisana, WMD i TextAreaResizer były dwoma oddzielnymi wtyczkami, z których żadna nie była autorstwa zespołu SO Dev (Zobacz też: odpowiedź micahwittmana). Ponadto JavaScript na stronie był dość łatwy do odczytania... Żaden z nich nie jest strictly już prawda, ale TextAreaResizer nadal działa dobrze.

 25
Author: Shog9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:01

Potrzebowałem ostatnio podobnej funkcjonalności. Nazywa się Autogrow i jest to Plugin niesamowitej biblioteki jQuery

 11
Author: Roman Ganz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-02 03:44:05

Na początku wierzyłem, że jest to wbudowana funkcja Wysiwym edytor Markdown , ale Shog9 ma rację: to nie jest pieczony w ogóle, ale jest dzięki uprzejmości jQuery Plugin TextAreaResizer (byłem prowadzić na manowce przez przeglądarkę używał sprawdzić na Demo edytora ponieważ Google Chrome sam dodaje rozszerzalną funkcjonalność na textareas-podobnie jak przeglądarka Safari robi).

 4
Author: micahwittman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 17:07:24

Używając 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);

    }
  };
});

To przekształci wszystkie twoje teksty, aby rosły/kurczyły się. Jeśli chcesz, aby tylko konkretne teksty rosły/zmniejszały się-zmień górną część, aby czytała się tak:

angular.module('app').directive('expandingTextarea', function() {
  return {
    restrict: 'A',
Mam nadzieję, że to pomoże!
 0
Author: benshope,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-24 19:00:37

A co z tym, jego pracą

<textarea oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea>
 0
Author: Martin Prestone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-26 11:51:45