Подтвердить что ты не робот

Внедрение изменчивой текстовой области?

Как Stackoverflow реализует изменчивую текстовую область?

Это что-то, что они катались самостоятельно или это общедоступный компонент, который я могу легко прикрепить к текстовым полям на своих сайтах?

Я нашел этот вопрос, и он не совсем делает то, что я хочу.

autosizing-textarea

Это больше говорит о автоматическом изменении размера текстовых полей, тогда как я хочу немного захватить область, которую вы можете перетащить вверх и вниз.

4b9b3361

Ответ 1

StackOverflow использует плагин jQuery для выполнения этого: TextAreaResizer.

Достаточно легко проверить это - просто вытащите файлы JS с сайта.

Историческая заметка:, когда этот ответ был изначально написан, WMD и TextAreaResizer были двумя отдельными плагинами, ни одна из которых не была создана командой SO Dev (см. также: micahwittman answer). Кроме того, JavaScript для сайта был довольно прост для чтения... Ни один из них не является строго истинным, но TextAreaResizer все еще работает отлично.

Ответ 2

Мне нужна была аналогичная функциональность в последнее время. Его называют Autogrow, и это плагин удивительного jQuery

Ответ 3

Сначала я считал, что это встроенная функция Wysiwym Markdown editor, но Shog9 верна: она не запекается вообще-то, но любезно предоставлен плагин jQuery TextAreaResizer (я был сбит с пути браузером, чтобы проверить демонстрацию , поскольку Google Chrome сам добавляет расширяемую функциональность в textareas &mdash, как это делает браузер Safari).

Ответ 4

Использование 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);

    }
  };
});

Это преобразует все ваши текстовые области для увеличения/сжатия. Если вы хотите, чтобы только определенные текстовые области увеличивались/сокращались - измените верхнюю часть следующим образом:

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

Надеюсь, что это поможет!