Textarea placeholder не работает: Placeholder не отображается в input

Содержание

::placeholder — CSS | MDN

CSS псевдоэлемент ::placeholder представляет собой текст placeholder (en-US) в <input> или <textarea> (en-US) элементах.

::placeholder {
  color: blue;
  font-size: 1.5em;
}

В ::placeholder можно использовать только те CSS-свойства, которые разрешены в псевдоэлементе ::first-line.

Примечание: В большинстве браузеров по умолчанию placeholder выглядит как полупрозрачный или светло-серый текст.

Error: could not find syntax for this item

Красный текст

HTML
<input placeholder="Введите что-нибудь!">
CSS
input::placeholder {
  color: red;
  font-size: 1.2em;
  font-style: italic;
}
Результат

Зелёный текст

HTML
<input placeholder="Введите что-нибудь...">
CSS
input::placeholder {
  color: green;
}
Результат

Цветовой контраст

Контрастность

Текст placeholder обычно имеет более светлую расцветку и содержит информацию о том, какие введённые данные будут допустимы, но при этом не является текущими введёнными данными.

Важно обеспечить достаточный цветовой контраст между placeholder и фоном, чтобы люди со слабым зрением могли его прочитать, но при этом должна быть достаточная разница между введённым текстом и текстом placeholder, чтобы пользователь не путал их.

Коэффициент цветового контраста определяется путём сравнения яркости текста placeholder и цветом фона формы ввода. Чтобы соответствовать рекомендациям Web Content Accessibility Guidelines (WCAG), требуется соотношение 4.5:1 для основного текста и 3:1 для более крупного текста, например, заголовков. Крупный текст определяется как 18.66px и больше с жирным начертанием или 24px и больше с обычным начертанием.

  • WebAIM: Color Contrast Checker
  • MDN Understanding WCAG, Guideline 1.4 explanations
  • Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0
Использование

Текст placeholder с высоким цветовым контрастом может быть воспринят как введённые данные. Текст placeholder исчезает, когда пользователь вводит что-либо в <input> элемент. Эти обстоятельства могут помешать заполнить правильно форму, особенно людям с когнитивными проблемами.

Другой подход к представлению информации placeholder заключается в том, чтобы расположить её вне формы ввода в непосредственной близости от неё, а затем использовать aria-describedby для программного связывания <input> элемента с подсказкой.

В таком случае содержимое подсказки будет доступно даже в том случае, если что-то введено в форму. Большинство скринридеров используют aria-describedby для чтения подсказок после того, как будет прочитан текст метки формы. Пользователь может отключить эту функцию, если дополнительная информация окажется ему ненужной.

<label for="user-email">Ваш email адрес</label>
<span>Пример: [email protected]</span>
<input aria-describedby="user-email-hint" name="email" type="email">
  • Placeholders in Form Fields Are Harmful — Nielsen Norman Group

Режим высокой контрастности Windows

Текст placeholder будет отображаться с теми же стилями, что и введённый пользователем текст при работе в режиме высокой контрастности Windows. Это вызовет затруднения с определением того какой текст был введён, а какой является placeholder.

  • Greg Whitworth — How to use -ms-high-contrast

Метки

Placeholder не является заменой элемента <label>. Без метки, которая программно связывается с формой с помощью for и id атрибутов, такие программы, как скринридеры не смогут анализировать элементы <input>

.

  • MDN Basic form hints (en-US)
  • Placeholders in Form Fields Are Harmful — Nielsen Norman Group
Specification
CSS Pseudo-Elements Module Level 4
# placeholder-pseudo

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

  • Псевдокласс :placeholder-shown, который позволяет применять стили к элементу с активным placeholder.
  • Связанные HTML-элементы: <input>, <textarea> (en-US)
  • HTML-формы

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

Want to get more involved?

Learn how to contribute.

This page was last modified on by MDN contributors.

Псевдокласс :placeholder-shown | WebReference

Определяет стиль элемента <input> или <textarea>, который в данный момент отображает текст подсказки, заданной атрибутом placeholder. Такая подсказка обычно исчезает при наборе текста.

Синтаксис

input:placeholder { ... }
textarea:placeholder-shown { ... }
Синтаксис
ОписаниеПример
<тип>Указывает тип значения.<размер>
A && BЗначения должны выводиться в указанном порядке.<размер> && <цвет>
A | BУказывает, что надо выбрать только одно значение из предложенных (A или B).normal | small-caps
A || BКаждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
[ ]Группирует значения.[ crop || cross ]
*Повторять ноль или больше раз.[,<время>]*
+Повторять один или больше раз.<число>+
?Указанный тип, слово или группа не является обязательным.inset?
{A, B}Повторять не менее A, но не более B раз.<радиус>{1,4}
#Повторять один или больше раз через запятую.<время>#

Пример

<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>:placeholder-shown</title> <style> input { border: 1px solid green; /* Зелёная рамка */ } input:placeholder-shown { border-color: red; /* Красная рамка */ } </style> </head> <body> <form action=»/example/handler.php»> <input type=»text» name=»login» placeholder=»Логин»> <input type=»password» name=»pass» placeholder=»Пароль»> </form> </body> </html>

В данном примере пустое поле отображается с красной рамкой, при вводе текста рамка меняет цвет на зелёный.

Спецификация

СпецификацияСтатус
Selectors Level 4Редакторский черновик
Спецификация

Каждая спецификация проходит несколько стадий одобрения.

  • Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
  • Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
  • Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
  • Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
  • Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
  • Draft (Черновик спецификации) — первая черновая версия стандарта.

Браузеры

4734951
609. 2
Браузеры

В таблице браузеров применяются следующие обозначения.

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

Число указывает версию браузреа, начиная с которой элемент поддерживается.

Псевдоклассы

См. также

  • Атрибут placeholder
  • Подсказка в поле формы
  • Подсказывающий текст
  • Псевдоэлемент ::placeholder

Практика

  • Подсказка

Справочник CSS

Значения свойств

Функции

Единицы CSS

Типы элементов

@-правила

Анимация

Границы

Контент

Логические

Отступы и поля

Печать

Позиционирование

Псевдоклассы

Псевдоэлементы

Размеры

Списки

Таблицы

Текст и шрифт

Флексы

Форматирование

Формы

Цвет и фон

⚡️ HTML и CSS с примерами кода

Тег <textarea> (от англ. text area — область текста) это элемент формы для создания области, в которую можно вводить несколько строк текста. Количество символов, которое можно ввести в поле не ограничено, а введенный текст отображается моноширинным шрифтом.

В отличие от элемента <input>, в текстовом поле можно делать переносы строк, и они сохраняются при отправке текста на сервер.

Между тегами <textarea> и </textarea> можно поместить любой текст, который будет отображаться внутри поля.

Формы
  • button
  • datalist
  • fieldset
  • form
  • input
  • label
  • legend
  • meter
  • optgroup
  • option
  • output
  • progress
  • select
  • textarea

Синтаксис

<textarea>
    текст
</textarea>

Закрывающий тег обязателен.

Атрибуты

autocomplete
Включает или отключает автозаполнение.
autofocus
Устанавливает фокус в поле формы.
cols
Ширина поля в символах.
dirname
Параметр, который передаёт на сервер направление текста.
disabled
Блокирует доступ и изменение элемента.
form
Связывает поле с формой по её идентификатору.
maxlength
Максимальное количество символов разрешённых в тексте.
minlength
Минимальное количество символов разрешённых в тексте.
name
Имя поля, предназначено для того, чтобы обработчик формы мог его идентифицировать.
placeholder
Выводит подсказывающий текст.
readonly
Устанавливает, что поле не может изменяться пользователем.
required
Обязательное для заполнения поле.
rows
Высота поля в строках текста.
wrap
Параметры переноса строк.

Также для этого элемента доступны универсальные атрибуты.

autocomplete

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

Автозаполнение конкретного поля формы привязывается к его атрибуту name и при смене значения теряется.

Синтаксис

<textarea autocomplete="on | off"></textarea>

Значения

on
Включает автозаполнение текста.
off
Отключает автозаполнение.

Значение по умолчанию

Зависит от настроек браузера.

autofocus

Автоматически устанавливает фокус в текстовое поле. В таком поле можно сразу набирать текст без переключения курсора в текстовое поле.

Синтаксис

<textarea autofocus> </textarea>

Значения

Нет.

Значение по умолчанию

По умолчанию атрибут autofocus не установлен.

cols

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

Синтаксис

<textarea cols="<число>"> </textarea>

Значения

Любое целое положительное число.

Значение по умолчанию

В HTML4 зависит от настроек браузера и операционной системы.

В HTML5 — 20.

dirname

При наличии атрибута dirname на сервер отправляется пара имя/значение, где имя задаётся атрибутом dirname, а значение подставляется браузером. Для текста, идущего слева направо, значение будет ltr, а для текста справа налево (арабского, к примеру) значение будет rtl.

Синтаксис

<textarea dirname="<строка>"></textarea>

Значения

Произвольная текстовая строка, которая служит именем параметра. Чтобы показать, что этот параметр указывает направление текста, обычно в конце строки добавляют .dir.

Значение по умолчанию

Нет.

disabled

Блокирует доступ и изменение текстового поля. Оно в таком случае отображается серым и недоступным для активации пользователем. Кроме того, такое поле не может получить фокус путем нажатия на клавишу Tab, мышью или другим способом. Тем не менее, такое состояние поля можно менять с помощью скриптов.

Заблокированный в поле текст не передаётся на сервер.

Синтаксис

<textarea disabled></textarea>

Значения

Нет.

Значение по умолчанию

По умолчанию это значение выключено.

form

Связывает текстовое поле с формой по её идентификатору. Такая связь необходима в случае, когда поле по каким-либо причинам располагается за пределами <form>.

Синтаксис

<textarea form="<идентификатор>"> </textarea>

Значения

Идентификатор формы (значение атрибута id элемента <form>).

Значение по умолчанию

Нет.

maxlength

Устанавливает максимальное число символов, которое может быть введено пользователем в текстовом поле. Когда это количество достигается при наборе, дальнейший ввод становится невозможным.

Синтаксис

<textarea maxlength="<число>"> </textarea>

Значения

Любое целое положительное число.

Значение по умолчанию

Нет.

minlength

Задаёт минимальное число символов, которое может быть введено пользователем в текстовом поле. Если число символов меньше указанного значения, то браузер выдаёт сообщение об ошибке и не отправляет форму.

Синтаксис

<textarea minlength="<число>"></textarea>

Значения

Любое целое положительное число.

Значение по умолчанию

Нет.

name

Определяет уникальное имя элемента <textarea>. Как правило, это имя используется при отправке данных на сервер или для доступа к полю через скрипты.

Синтаксис

<textarea name="<имя>"> </textarea>

Значения

В качестве имени используется набор символов, включая числа и буквы. JavaScript чувствителен к регистру, поэтому при обращении к элементу <textarea> по имени соблюдайте ту же форму написания, что и в атрибуте name.

Значение по умолчанию

Нет.

placeholder

Выводит подсказывающий текст внутри текстового поля, который исчезает при получении фокуса или наборе текста. В качестве подсказки обычно применяется короткий текст, состоящий из одного слова или фразы.

Синтаксис

<textarea placeholder="<текст>"> </textarea>

Значения

Текстовая строка.

Значение по умолчанию

Нет.

readonly

Когда к элементу <textarea> добавляется атрибут readonly, текстовое поле не может изменяться пользователем, в том числе вводиться новый текст или модифицироваться существующий. Тем не менее, состояние и содержимое поля можно менять с помощью скриптов. Также содержимое поле можно выделить и скопировать в буфер обмена.

Синтаксис

<textarea readonly></textarea>

Значения

Нет.

Значение по умолчанию

По умолчанию это значение выключено.

required

Устанавливает текстовое поле обязательным для заполнения перед отправкой формы на сервер. Если в обязательном поле нет текста, браузер выведет сообщение, а форма отправлена не будет. Вид и содержание сообщения зависит от браузера и меняться пользователем не может.

Синтаксис

<textarea required> </textarea>

Значения

Нет.

Значение по умолчанию

По умолчанию атрибут required выключен.

rows

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

Синтаксис

<textarea rows="<число>"></textarea>

Значения

Любое целое положительное число.

Значение по умолчанию

В HTML4 зависит от настроек браузера и операционной системы.

В HTML5 — 2.

wrap

Атрибут wrap говорит браузеру, как осуществлять перенос текста в поле <textarea> и в каком виде отправлять данные на сервер. Если этот атрибут отсутствует, текст в поле набирается одной строкой, когда число введённых символов превышает ширину области, появляется горизонтальная полоса прокрутки. Нажатие кнопки Enter переносит текст на новую строку, и курсор устанавливается у левого края поля.

Синтаксис

<textarea wrap="soft | hard"> </textarea>

Значения

soft
Слова в текстовом поле переносятся механически, если они не поместились в размер области, но при отправке на сервер переносы не сохраняются.
hard
Длинный текст, который самостоятельно не помещается в поле по ширине, автоматически переносится на новую строку и вместе с переносами отправляется на сервер. Для работы требуется наличие атрибута cols.

Значение по умолчанию

soft

Спецификации

  • WHATWG HTML Living Standard
  • HTML 5
  • HTML 4.01 Specification

Описание и примеры

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>TEXTAREA</title>
  </head>
  <body>
    <form action="textarea1.php" method="post">
      <p><b>Введите ваш отзыв:</b></p>
      <p>
        <textarea
          rows="10"
          cols="45"
          name="text"
        ></textarea>
      </p>
      <p><input type="submit" value="Отправить" /></p>
    </form>
  </body>
</html>

См. также

  • <form>
  • <input>

Ссылки

  • Тег <textarea> MDN (рус. )

Form Textarea | Components | BootstrapVue

Создавайте многострочные текстовые поля ввода с поддержкой автоматического изменения размера, минимального и максимального количества строк и контекстных состояний.

<template>
  <div>
    <b-form-textarea
     
      v-model="text"
      placeholder="Введите что-нибудь..."
      rows="3"
      max-rows="6"
    ></b-form-textarea>
    <pre>{{ text }}</pre>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        text: ''
      }
    }
  }
</script>
<!-- b-form-textarea.vue -->

Размеры элементов управления

Установите высоту текста с помощью свойства size на sm или lg для маленьких или больших соответственно.

Чтобы контролировать ширину, поместите ввод внутри стандартного столбца сетки Bootstrap.

<b-container fluid>
  <b-row>
    <b-col sm="2">
      <label for="textarea-small">Маленький:</label>
    </b-col>
    <b-col sm="10">
      <b-form-textarea
       
        size="sm"
        placeholder="Маленькая текстовая область"
      ></b-form-textarea>
    </b-col>
  </b-row>
  <b-row>
    <b-col sm="2">
      <label for="textarea-default">По умолчанию:</label>
    </b-col>
    <b-col sm="10">
      <b-form-textarea
       
        placeholder="Текстовая область по умолчанию"
      ></b-form-textarea>
    </b-col>
  </b-row>
  <b-row>
    <b-col sm="2">
      <label for="textarea-large">Большой:</label>
    </b-col>
    <b-col sm="10">
      <b-form-textarea
       
        size="lg"
        placeholder="Большая текстовая область"
      ></b-form-textarea>
    </b-col>
  </b-row>
</b-container>
<!-- b-form-textarea-sizes. vue -->

Отображаемые строки

Чтобы установить высоту <b-form-textarea>, установите свойство rows на желаемое количество строк. Если для rows, не задано значение, то по умолчанию будет 2 (значение по умолчанию для браузера и минимально допустимое значение). Если задать для него значение null или значение ниже 2, будет использоваться значение по умолчанию 2.

<div>
  <b-form-textarea
   
    placeholder="Высокое текстовое поле"
    rows="8"
  ></b-form-textarea>
</div>
<!-- b-form-textarea-rows.vue -->

Отключить маркер изменения размера

Некоторые веб-браузеры позволяют пользователю изменять высоту текстового поля. Чтобы отключить эту функцию, установите для свойства no-resize значение true.

<div>
  <b-form-textarea
   
    placeholder="Текстовое поле с фиксированной высотой"
    rows="3"
    no-resize
  ></b-form-textarea>
</div>
<!-- b-form-textarea-no-resize. vue -->

Автоматическая высота

<b-form-textarea> также может автоматически регулировать свою высоту (текстовые строки) в соответствии с содержимым, даже когда пользователь вводит или удаляет текст. Высота текстового поля будет либо увеличиваться, либо уменьшаться, чтобы соответствовать содержимому (увеличиваться до максимума max-rows или уменьшаться до минимального rows).

Чтобы установить начальную минимальную высоту (в строках), установите свойство rows на желаемое количество строк (или оставьте значение по умолчанию 2), а затем установите максимальное количество строк, до которых будет увеличиваться текстовая область (до показывая полосу прокрутки), установив для свойства max-rows максимальное количество строк текста.

Чтобы сделать высоту sticky (т.е. никогда не уменьшаться), установите для свойства no-auto-shrink значение true. Свойства no-auto-shrink не действуют, если max-rows не задано или равно или меньше rows.

Обратите внимание, что дескриптор изменения размера текстового поля (если он поддерживается браузером) будет автоматически отключен в режиме автоматической высоты.

<b-container fluid>
  <b-row>
    <b-col sm="2">
      <label for="textarea-auto-height">Автоматическая высота:</label>
    </b-col>
    <b-col sm="10">
      <b-form-textarea
       
        placeholder="Текстовое поле с автоматической высотой"
        rows="3"
        max-rows="8"
      ></b-form-textarea>
    </b-col>
  </b-row>
  <b-row>
    <b-col sm="2">
      <label for="textarea-no-auto-shrink">Без автоматического сжатия:</label>
    </b-col>
    <b-col sm="10">
      <b-form-textarea
       
        placeholder="Текстовое поле с автоматической высотой (без сжатия)"
        rows="3"
        max-rows="8"
        no-auto-shrink
      ></b-form-textarea>
    </b-col>
  </b-row>
</b-container>
<!-- b-form-textarea-auto-height. vue -->
Примечание о реализации автоматической высоты

Автоматическая высота работает путем вычисления результирующей высоты с помощью запросов CSS, поэтому ввод должен быть в документе (DOM) и видимым (не скрытым с помощью display: none). Начальная высота рассчитывается на креплении. Если клиент браузера поддерживает IntersectionObserver (либо изначально, либо через a polyfill), то <b-form-textarea> воспользуется преимуществом. этого, чтобы определить, когда текстовое поле станет видимым, и затем вычислит высоту. Смотрите раздел Поддержка браузера на странице начала работы.

Контекстные состояния

Bootstrap включает стили валидации для состояний valid и invalid для большинства элементов управления формой.

Вообще говоря, вы захотите использовать определенное состояние для определенных типов обратной связи:

  • false (обозначает недопустимое состояние) отлично подходит, когда есть блокирующее или обязательное поле. Пользователь должен правильно заполнить это поле, чтобы отправить форму.
  • true (обозначает допустимое состояние) идеально подходит для ситуаций, когда у вас есть проверка по каждому полю во всей форме и вы хотите побудить пользователя пройти через остальные поля.
  • null Не отображает состояние проверки (ни действительное, ни недействительное)

Чтобы применить один из значков контекстного состояния к <b-form-textarea>, установите для свойства state значение false (для недопустимого), true (для действительного) или null (без состояния проверки).

<template>
  <div>
    <b-form-textarea
     
      v-model="text"
      :state="text.length >= 10"
      placeholder="Введите не менее 10 символов"
      rows="3"
    ></b-form-textarea>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        text: ''
      }
    }
  }
</script>
<!-- b-form-textarea-state. vue -->

Передача состояния контекста вспомогательным технологиям и дальтоникам

Использование этих контекстных состояний для обозначения состояния элемента управления формы обеспечивает только визуальную цветовую индикацию, которая не будет передана пользователям вспомогательных технологий, таких как программы чтения с экрана, или пользователям с дальтонизмом.

Убедитесь, что также имеется альтернативная индикация состояния. Например, вы можете включить подсказку о состоянии в самом тексте <label> элемента управления формой или предоставив дополнительный текстовый блок справки.

Атрибут

aria-invalid

Когда <b-form-textarea> имеет недопустимое контекстное состояние (т.е. состояние false), вы также можете захотеть установить для свойства aria-invalid значение true или одно из поддерживаемых значений:

  • false: Без ошибок (по умолчанию)
  • true или 'true': Значение не прошло проверку.
  • 'grammar': Обнаружена грамматическая ошибка.
  • 'spelling' Обнаружена орфографическая ошибка.

Если для свойства state задано значение false, а свойство aria-invalid явно не установлено, <b-form-textarea> автоматически установит для атрибута aria-invalid значение 'true'.

Поддержка форматтера

<b-form-textarea> опционально поддерживает форматирование, передавая ссылку на функцию в свойство formatter.

Форматирование (когда предоставляется функция форматирования) происходит, когда срабатывают собственные события элемента управления input и change. Вы можете использовать логическое свойство lazy-formatter, чтобы ограничить вызов функции форматирования для собственного события элемента управления blur.

Функция formatter получает два аргумента: необработанное value элемента ввода и нативный объект event, который инициировал форматирование (если доступно).

Функция formatter должна возвращать отформатированное значение как строка.

Форматирование не происходит, если не предоставлено средство форматирования formatter.

<template>
  <div>
    <b-form-group
      label="Текстовая область с форматеров (при вводе)"
      label-for="textarea-formatter"
      description="Мы мгновенно переведем ваш текст в нижний регистр"
     
    >
      <b-form-textarea
       
        v-model="text1"
        placeholder="Enter your text"
        :formatter="formatter"
      ></b-form-textarea>
    </b-form-group>
    <p><b>Значение:</b> {{ text1 }}</p>
    <b-form-group
      label="Текстовая область с отложенным форматеров (при блюре)"
      label-for="textarea-lazy"
      description="Этот немного поленился!"
     
    >
      <b-form-textarea
       
        v-model="text2"
        placeholder="Enter your text"
        lazy-formatter
        :formatter="formatter"
      ></b-form-textarea>
    </b-form-group>
    <p><b>Значение:</b> {{ text2 }}</p>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        text1: '',
        text2: ''
      }
    },
    methods: {
      formatter(value) {
        return value. toLowerCase()
      }
    }
  }
</script>
<!-- b-form-textarea-formatter.vue -->

Примечание: При неленивом форматировании, если курсор не находится в конце входного значения, он может переместиться в конец после ввода символа. Вы можете использовать предоставленный объект события и event.target для доступа к собственным методам выбора и свойствам ввода, чтобы контролировать, где находится точка вставки. Это оставлено читателю в качестве упражнения.

Обычный текст только для чтения

Если вы хотите, чтобы элементы <b-form-textarea readonly> в вашей форме были стилизованы как простой текст, установите свойство plaintext (не нужно устанавливать readonly, так как она будет установлена автоматически), чтобы удалить форму по умолчанию стиль поля и сохранить правильный размер текста, поля, отступы и высоту.

<template>
  <div>
    <b-form-textarea plaintext :value="text"></b-form-textarea>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        text: "Это какой-то текст. \nОн доступен только для чтения и не похож на ввод."
      }
    }
  }
</script>
<!-- b-form-textarea-plaintext.vue -->

Модификаторы

v-model

Vue официально не поддерживает модификаторы .lazy, .trim и .number в v-model входных данных на основе настраиваемых компонентов и может создавать неудобства для пользователей. Избегайте использования собственных модификаторов Vue.

Чтобы обойти это, в <b-form-textarea> есть три логических свойства trim, number и lazy, которые имитируют встроенные модификаторы Vue v-model .trim и .number и .lazy соответственно. Свойство lazy будет обновлять v-model при событиях change/blur.

Примечания:

  • Свойство number имеет приоритет перед свойством trim (то есть trim не будет иметь никакого эффекта, если установлено number).
  • При использовании свойства number и если значение может быть проанализировано как число (через parseFloat), оно вернет значение типа Number в v-model, в противном случае возвращается исходное входное значение, как тип String. Это то же самое поведение, что и собственный модификатор .number.
  • Свойства модификаторов trim и number не влияют на значение, возвращаемое событиями input или change. Эти события всегда будут возвращать строковое значение содержимого <textarea> после необязательного форматирования (которое может не соответствовать значению, возвращаемому через событие update в v-model, которое обрабатывает модификаторы).

Поддержка Debounce

В качестве альтернативы свойства модификатора lazy, <b-form-textarea> опционально поддерживает отладку пользовательского ввода, обновляя v-model после периода простоя с момента, когда последний символ был введен пользователем ( или происходит событие change). Если пользователь вводит новый символ (или удаляет символы) до истечения тайм-аута простоя, тайм-аут запускается повторно.

Чтобы включить debouncing, установите для свойства debounce любое целое число больше нуля. Значение указывается в миллисекундах. Установка debounce на 0 отключит debouncing.

Примечание: устранение неполадок не произойдет, если установлено свойство lazy.

<template>
  <div>
    <b-form-textarea v-model="value" debounce="500" rows="3" max-rows="5"></b-form-textarea>
    <pre>{{ value }}</pre>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        value: ''
      }
    }
  }
</script>
<!-- b-form-textarea-debounce. vue -->

Автофокус

Когда свойство autofocus установлено на <b-form-textarea>, текстовое поле будет автоматически сфокусировано, когда оно вставлено (т.е. mounted) в документ или повторно активировано, когда оно находится внутри компонента Vue <keep-alive>. Обратите внимание, что это свойство не устанавливает атрибут autofocus в текстовом поле и не может определить, когда текстовое поле станет видимым.

Собственные и пользовательские события

Поддерживаются все собственные события (кроме настраиваемых событий input и change) без модификатора .native.

Пользовательские события input и change получают единственный аргумент текущего значения value (после применения любого форматирования) и запускаются при взаимодействии с пользователем.

Пользовательские события update передается входное значение, и оно генерируется всякий раз, когда v-model нуждается в обновлении (оно генерируется перед input, change и blur по мере необходимости).

Вы всегда можете получить доступ к собственным событиям input и change с помощью модификатора .native.

Открытые входные свойства и методы

<b-form-textarea> предоставляет несколько свойств и методов встроенного элемента ввода в ссылке на компонент (т.е. присваивает ref вашему <b-form-textarea ref="foo" ...> и используйте this.$refs['foo'].propertyName или this.$refs['foo'].methodName(...)).

Свойства ввода

СвойствоПримечания
. selectionStartЧтение/Запись
.selectionEndЧтение/Запись
.selectionDirectionЧтение/Запись
.validityТолько чтение
.validationMessageТолько чтение
.willValidateТолько чтение

Методы ввода

МетодПримечания
.focus()Фокус на вводе
.blur()Убрать фокус с ввода
.select()Выбирает весь текст в поле ввода
.setSelectionRange()
.setRangeText()
. setCustomValidity()
.checkValidity()
.reportValidity()

Обратитесь к https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement для получения дополнительной информации об этих методах и свойствах. Поддержка будет зависеть от типа ввода.

Справочник по компонентам

<b-form-textarea>

Смотреть источник

  • <b-form-textarea> Псевдонимы компонентов
  • <b-form-textarea> Свойства
  • <b-form-textarea> v-model
  • <b-form-textarea> События
Псевдонимы компонентов

<b-form-textarea> также может использоваться через следующие псевдонимы:

  • <b-textarea>

Примечание: Псевдонимы компонентов доступны только при импорте всего BootstrapVue или при использовании подключаемого модуля группы компонентов.

Свойства

Все значения свойств по умолчанию настраиваются глобально.

Свойство

(Click to sort ascending)

Тип

(Click to sort ascending)

По умолчанию

Описание

aria-invalid
Boolean или StringfalseУстанавливает атрибут ‘aria-invalid’ с указанным значением
autocomplete
StringУстанавливает значение атрибута ‘autocomplete’ в элементе управления формы
autofocus
BooleanfalseЕсли установлено значение `true`, пытается автоматически сфокусировать элемент управления, когда он установлен, или повторно активировать, когда находится в состоянии активности. Не устанавливает атрибут `autofocus` на элементе управления
debounce
v2.1.0+
Number или String0Если установлено количество миллисекунд больше нуля, пользовательский ввод будет подавлен. Не действует, если задано свойство ‘lazy’
disabled
BooleanfalseЕсли установлено значение `true`, отключает функциональность компонента и переводит его в отключенное состояние.
form
StringИдентификатор формы, к которой принадлежит элемент управления формой. Устанавливает атрибут `form` в элементе управления
formatter
FunctionСсылка на функцию форматирования текстового поля
id
StringИспользуется для установки атрибута `id` для визуализированного контента и используется в качестве основы для генерации любых дополнительных идентификаторов элементов по мере необходимости.
lazy
v2.1.0+
BooleanfalseЕсли установлено, обновляет v-модель при событиях ‘change’/’blur’ вместо ‘input’. Эмулирует модификатор Vue v-model ‘.lazy’
lazy-formatter
BooleanfalseЕсли установлено, текстовое поле форматируется при размытии вместо каждого нажатия клавиши (если указано средство форматирования)
max-rows
Number или StringМаксимальное количество отображаемых строк. Если предоставляется, текстовое поле будет увеличиваться (или уменьшаться), чтобы соответствовать содержимому до максимального количества строк
name
StringУстанавливает значение атрибута `name` в элементе управления формы
no-auto-shrink
BooleanfalseЕсли задано, предотвращает сжатие текстового поля с автоматической высотой, чтобы оно соответствовало содержимому
no-resize
BooleanfalseЕсли установлено, отключен дескриптор изменения размера браузера, который не позволяет пользователю изменять высоту текстового поля. Автоматически устанавливается в режиме автоматической высоты
number
BooleanfalseПри установке пытается преобразовать входное значение в собственное число. Эмулирует модификатор Vue ‘.number’ v-model
placeholder
StringУстанавливает значение атрибута `placeholder` в элементе управления формы
plaintext
BooleanfalseУстанавливает элемент управления формы как только для чтения и визуализируйте элемент управления как обычный текст (без границ)
readonly
BooleanfalseУстанавливает атрибут `readonly` в элементе управления формы
required
BooleanfalseДобавляет атрибут `required` в элемент управления формы
rows
Number или String2Минимальное количество отображаемых строк. Должно быть значение больше 1
size
StringУстановите размер внешнего вида компонента. ‘sm’, ‘md’ (по умолчанию) или ‘lg’
state
BooleannullУправляет внешним видом состояния проверки компонента. `true` для действительного, `false` для недопустимого или `null` для отсутствия проверки состояния
trim
BooleanfalseЕсли установлено, обрезает все начальные и конечные пробелы входного значения. Эмулирует модификатор Vue ‘.trim’ v-model
value
v-model
Number или String''Текущее значение textarea. Результат всегда будет строкой, за исключением случаев, когда используется свойство ‘number’
wrap
String'soft'Значение, которое нужно разместить в атрибуте ‘wrap’ текстового поля. Управляет возвратом разрыва строки
v-model

Свойство

Событие

valueupdate
События

Событие

Аргументы

Описание

blur
  1. event — Собственное событие размытия (до того, как произойдет какое-либо дополнительное форматирование)
Генерируется после того, как текстовое поле теряет фокус
change
  1. value — Текущее значение текстового поля
Событие ввода, вызванное взаимодействием с пользователем. Генерируется после любого форматирования (не включая свойства ‘trim’ или ‘number’) и после обновления v-model
input
  1. value — Текущее значение текстового поля
Событие изменения, вызванное взаимодействием с пользователем. Генерируется после любого форматирования (не включая свойства ‘trim’ или ‘number’) и после обновления v-model
update
  1. value — Значение textarea после любого форматирования. Не генерируется, если значение не меняется
Выпущено для обновления v-model

Импорт отдельных компонентов

Вы можете импортировать отдельные компоненты в свой проект с помощью следующих именованных экспортов:

Компонент

Именованный экспорт

Путь импорта

<b-form-textarea>BFormTextareabootstrap-vue

Пример:

import { BFormTextarea } from 'bootstrap-vue'
Vue. component('b-form-textarea', BFormTextarea)

Импортировать как плагин Vue.js

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

Именованный экспорт

Путь импорта

FormTextareaPluginbootstrap-vue

Пример:

import { FormTextareaPlugin } from 'bootstrap-vue'
Vue.use(FormTextareaPlugin)

Стилизуем Placeholder с помощью CSS 

Используйте псевдоэлемент ::placeholder для стилизации дефолтного текста в элементе input или textarea. Большинство современных браузеров поддерживают это, но для старых браузеров требуются префиксы.

::placeholder { 
 color: deeppink;
 font-size: 5rem;
 text-transform: uppercase;
}

HTML

Префиксы

Используемый мной синтаксис поддерживается большинством современных браузеров:

::placeholder { 
 color: deeppink;
}

Но для более старых браузеров вам нужно будет использовать префиксы поставщика.

/* WebKit, Edge */
::-webkit-input-placeholder {
 color: deeppink;
}

/* Firefox 4-18 */
:-moz-placeholder { 
 color: deeppink;
 opacity: 1;
}

/* Firefox 19+ */
::-moz-placeholder { 
 color: deeppink;
 opacity: 1;
}

/* IE 10-11 */
:-ms-input-placeholder { 
 color: deeppink;
}

/* Edge */
::-ms-input-placeholder { 
 color: deeppink;
}

/* MODERN BROWSER */
::placeholder { 
 color: deeppink;
}

Вау! Я знаю, это огромный список. И вы можете заметить довольно много разных вариантов реализации. Итак, давайте разберем эти различия и поймем, что здесь происходит.

Псевдоэлемент против псевдокласса

Вы можете заметить, что я использую двойное двоеточие ::. Это называется псевдоэлементом и было введено в CSS3. Если бы мы использовали одно двоеточие :, это назвали бы псевдоклассом.

Поскольку псевдоэлемент, :: был представлен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его. Принимая во внимание, что псевдокласс, : был представлен ранее (в CSS1 и CSS2). Вот почему гораздо больше браузеров, включая Internet Explorer, поддерживают его.

Следовательно, в нашем ::placeholder префиксе поставщика вы будете использовать смесь псевдокласса и псевдоэлемента.

Непрозрачность Placeholder в Firefox по умолчанию

Хорошо, с чем это связано opacity: 1 для Firefox. Это потому, что по умолчанию для placeholder Firefox применяется значение непрозрачности. Таким образом, чтобы переопределить это, мы должны установить его принудительно. Таким образом, наш placeholder будет отображаться и не будет иметь блеклого внешнего вида по умолчанию.

CSS-обработка неверных селекторов

Таким образом, вы также можете подумать, почему мы не просто сгруппировали все префиксы вендоров вместе как в примере ниже:

::-moz-placeholder, /* Firefox 19+ */
:-moz-placeholder /* Firefox 4-18 */
{ 
 color: deeppink;
 opacity: 1;
}

Ну, это потому, что в CSS3 было правило, которое гласит:

группа селекторов, содержащая недопустимый селектор, недействительна.

Давайте посмотрим на пример, чтобы увидеть, что это значит. Вот правильный CSS-селектор

h2 {
 color: blue;
}

Так что в нашем HTML это будет выглядеть как ожидалось

 

Но что произойдет, если мы добавим неверный селектор CSS

h2, /* valid */
h3::poop /* invalid */
{
 color: blue;
}

Так как в группе есть недопустимый селектор CSS. Вся группа будет считаться недействительной, и стилизация не будет применена.

 

Вот почему нам нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.

⭐️ НО! похоже, это можно изменить в CSS4.

Как правило, если в цепочке или группе селекторов присутствует недопустимый псевдоэлемент или псевдокласс, весь список селекторов является недействительным. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, то по состоянию на Firefox 63 браузеры Blink, Webkit и Gecko предполагают, что он действителен, не аннулирует список выбора.

Подробнее об этом читайте в статье Криса Койера «Один неверный псевдо-селектор равен целому игнорируемому селектору»

Поддерживаемые стили

Вот список всех стилей, которые вы можете применить к вашему placeholder:

  • background свойства
  • color
  • font свойства
  • letter-spacing
  • line-height
  • opacity
  • text-decoration
  • text-indent
  • text-transform
  • vertical-align
  • word-spacing

Проблемы доступности

Способность стилизовать заполнители — это круто. Но мне нужно отметить кое-что действительно важное — текст-заполнитель не заменяет элемент метки !! Я был виновен в этом, когда впервые попал в веб-программирование 🙁. Когда ваша форма основана исключительно на инструкциях-заполнителях без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш веб-сайт доступным для всех, но и для повышения удобства работы пользователей. И, в конечном итоге, создание лучшего сайта или веб-приложения.

Вот действительно потрясающая статья о том, как использовать заполнители без каких-либо меток. Ниже приведены три основных тезиса:

  1. Поскольку placeholder исчезает в при вводе, он может напрягать кратковременную память вашего пользователя
  2. Без label пользователи не могут проверить свою работу перед отправкой формы.
  3. Когда появляются сообщения об ошибках, люди не знают, как решить проблему.

Автоматически добавлять Vendor-префиксы

Если вы не хотите иметь дело со всеми префиксами вендоров, вы можете использовать PostCSS с плагином Autoprefixer . Этот плагин будет анализировать ваш CSS и добавлять префиксы.

Тег — поле для ввода текста

Поддержка браузерами

Описание

HTML тег <textarea> определяет многострочное текстовое поле. Количество символов, которое можно ввести в поле не ограничено, а введенный текст отображается моноширинным шрифтом.

По умолчанию поле ввода элемента <textarea>, при отображении в браузере, можно растянуть (изменить его размер), потянув за нижний правый угол. Если вам нужно запретить изменение размера <textarea>, то нужно прописать CSS свойство resize со значением none в атрибуте style, в этом случае получится запретить растягивать только данное поле ввода:


<textarea></textarea>

Либо можно прописать resize: none; в стилях, тогда правило примениться ко всем многострочным текстовым полям:


textarea { resize: none; }

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

Между тегами <textarea> и </textarea> можно поместить любой текст, который будет изначально отображаться внутри текстового поля. Обратите внимание, что этот текст не исчезнет, когда поле ввода окажется в фокусе, поэтому если пользователь, при заполнении поля, не удалит данный текст, то он будет отправлен на сервер вместе с введенными данными.

Атрибуты

autofocus:
Указывает, что элемент <textarea> автоматически получит фокус после загрузки страницы. Возможные значения логического атрибута autofocus:

<textarea autofocus>
<textarea autofocus="autofocus">
<textarea autofocus="">

Примечание: атрибут autofocus не поддерживается в IE9 и более ранних версиях.

cols:
Указывает положительное целое число, определяющее ширину текстового поля (единицей измерения выступает ширина одного символа). Если атрибут не указан, то используется значение по умолчанию — 20.
disabled:
Указывает, что текстовая область будет неактивна, т.е. не будет возможности вводить текст или изменять и копировать текст, заданный по умолчанию. Возможные значения логического атрибута disabled:

<textarea disabled>
<textarea disabled="disabled">
<textarea disabled="">
form:
Определяет форму с которой связан элемент <textarea>. В качестве значения атрибута выступает идентификатор элемента <form>. Этот атрибут позволяет размещать многострочное текстовое поле в произвольном месте документа, а не только в качестве потомка элемента <form>.

Примечание: атрибут form не поддерживается браузером Internet Explorer.

maxlength:
Определяет максимально количество символов, которое можно будет ввести в текстовое поле.

Примечание: атрибут maxlength не поддерживается в IE9 и более ранних версия, и в Opera.

name:
Определяет имя для элемента.
placeholder:
Определяет короткую подсказку, которая описывает ожидаемое значение для текстового поля. Подсказка будет отображаться в текстовом поле, когда оно пустое, и исчезнет при получение им фокуса.

Примечание: атрибут placeholder не поддерживается в IE9 и более ранних версия.

readonly:
Указывает, что текстовое поле будет доступно только для чтения, т.е. текст невозможно будет изменить, но будет возможность его скопировать. Возможные значения логического атрибута readonly:

<textarea readonly>
<textarea readonly="readonly">
<textarea readonly="">
required:
Указывает, что текстовое поле должно быть заполнено перед отправкой формы на сервер.

Примечание: атрибут required не поддерживается браузерами Internet Explorer и Safari.

rows:
Указывает положительное целое число, определяющее высоту текстового поля (единицей измерения выступает высота строки). Если атрибут не указан, то используется значение по умолчанию — 2.
wrap:
Определяет параметры переноса строк в тексте, при отправке данных на сервер:
  • hard — браузер автоматически вставляет разрывы строки так, что каждая строка не будет иметь ширину больше, чем ширина текстового поля. Обязательным условием использования значения hard является установленный атрибут cols.
  • soft — текст отправляется одной сплошной строкой, дополнительные переносы строк не добавляются. Является значением по умолчанию.

Тег <textarea> так же поддерживает Глобальные атрибуты и События

Стиль по умолчанию

Нет.

Пример


<textarea rows="3" cols="40">
  Здесь могла быть ваша реклама :)
</textarea>

Результат данного примера в окне браузера:

Стилизовать текст-заполнитель HTML5 с помощью CSS [input and textarea]

До HTML5 существовал XHTML1, а до него — HTML4. Заполнители, какими мы их знаем сегодня, были в XHTML1 и HTML4, смоделированные с помощью JavaScript. Стилизовать эти смоделированные заполнители было легко, потому что они на самом деле были входными значениями. Теперь, когда заполнители интегрированы в HTML5, эти заполнители JavaScript являются излишними, но стилизация этих заполнителей HTML5 стала намного сложнее, чем стилизация заполнителей JavaScript, особенно если вы хотите, чтобы стили заполнителей HTML5 применялись в разных браузерах. Этот учебник покажет вам, как именно стилизовать текст-заполнитель HTML5, используя только CSS, для обоих элементов ввода как элементов textarea. Прежде чем использовать какой-либо из приведенных ниже фрагментов кода, важно знать, что основные браузеры, такие как Chrome, FireFox, Safari, Opera и Internet Explorer/Edge, используют разные шаблоны для стилизации заполнителей ввода и заполнителей текстовой области.

Создайте поле ввода HTML5 и текстовую область с заполнителем

Давайте сначала покажем разметку HTML5, необходимую для создания поля ввода и поля текстовой области, которые содержат текст-заполнитель. В обоих приведенных ниже полях будет текст примера заполнителя, к которому будет применен стиль браузера по умолчанию, предоставляемый используемым вами браузером:

. Введите HTML:

Textarea HTML: