Отображение дополнительного текста при нажатии на поле формы - реагировать

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

в основном, у меня есть поле для имени, и когда его щелкнули, я бы хотел, чтобы «Введите свое имя» появилось под этим полем.

вот что у меня сейчас есть:

<div className = "form-group form-row">
    <label
       id = "firstNameLabel"
       className = "col-md-2 col-form-label text-md-right"
       htmlFor = "firstName1"
       readOnly
    >
      First Name*
    </label>
    <div className = "col-md-10">
         <input
         type = "text"
         className = "form-control"
         name = "firstName1"
         ref = "firstName1"
         placeholder = "First Name"
         value = {this.state.firstName1} 
         onChange = {this.handleChangeEvent} 
         required
     />
     <div className = "error" id = "firstnameError" />
   </div>
 </div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это выглядит так:

В случае, если вы хотите отслеживать, сохраните какой-либо флаг в состоянии, например.

this.setState({userClicked:true})

Событием, за которым вы хотите следить, может быть onFocus, т.е.

<input
     type = "text"
     className = "form-control"
     name = "firstName1"
     ref = "firstName1"
     placeholder = "First Name"
     value = {this.state.firstName1} 
     onFocus = {()=>{ this.setState({userClicked:true}) }}
     onChange = {this.handleChangeEvent} 
     required
   />

Вы также можете использовать onBlur, чтобы установить флаг в false, когда ввод теряет фокус, Затем в рендере поместите ниже код, где вы хотите, чтобы уведомление отображалось:

....
{this.state.userClicked && <div>Enter first name</div>}

Над строкой убедитесь, что div отображается, когда userClicked истинно.

Привет, Георгий. Я не знаю, как реагировать (я использую Vue), но не могли бы вы сделать это только с помощью CSS? Пусть div с текстом всегда присутствует (что хорошо для доступности), но скрыт (visibility:hidden), затем используйте селектор :focus на элементе управления, чтобы изменить его на visible. Если вы являются делаете это с реакцией, не будет ли достаточно onFocus? (Я думаю, вам не нужно следить за кликом, потому что фокус получается при нажатии, и вы уже обрабатываете фокус)

Stephen P 30.05.2019 21:23

@StephenP Я переформулировал ответ. Кажется, вы предлагаете какой-то чистый способ CSS, я не знаю, как вы это сделаете, я не профессионал в CSS. Я думаю, это было бы хорошо. Одна вещь, которую React не одобряет, — это прямое изменение DOM. Потому что React должен это делать. Если ваш подход к CSS не нарушает этого, все должно быть в порядке.

Giorgi Moniava 30.05.2019 21:30

Для этого вы можете использовать события onFocus и onBlur, вот пример:

<input
  onFocus = {() => this.setState({inputFocused: true})}
  onBlur = {() => this.setState({inputFocused: false})}
\>
{this.state.inputFocused && <div>Some message</div>}

Другие вопросы по теме