Я новичок в Bootstrap и застрял с этой проблемой. У меня есть поле ввода, и как только я ввожу только одну цифру, onChange
вызывается функция from , но я хочу, чтобы она вызывалась, когда я нажимаю «Enter», когда введено целое число. Та же проблема для функции проверки - она вызывается слишком рано.
var inputProcent = React.CreateElement(bootstrap.Input, {type: "text",
//bsStyle: this.validationInputFactor(),
placeholder: this.initialFactor,
className: "input-block-level",
onChange: this.handleInput,
block: true,
addonBefore: '%',
ref:'input',
hasFeedback: true
});
javascript
twitter-bootstrap
reactjs
Билл Лумберт
источник
источник
onBlur
событием.<input ref='reference' onKeyPress={(e) => {(e.key === 'Enter' ? doSomething(this.refs.reference.value) : null)}} />
ref
.<input onKeyPress={e => doSomething(e.target.value)}
достаточно.onKeyPress
запускается. Это тонкое улучшение.Вы можете использовать onKeyPress непосредственно в поле ввода. Функция onChange изменяет значение состояния при каждом изменении поля ввода и после нажатия клавиши Enter вызывает функцию search ().
источник
onKeyPress={this.yourFunc}
противном случае функция жирной стрелки будет создаваться при каждом рендеринге.onKeyPress={event => event.key === 'Enter' && this.search()}
нажатие Enter, когда фокус на элементе управления формы (вход) обычно вызывает
submit
событие (onSubmit) на самой форме (не на входе), чтобы вы могли связать своюthis.handleInput
форму с формой onSubmit.В качестве альтернативы вы можете привязать его к
blur
событию (onBlur),input
которое происходит при удалении фокуса (например, переход к следующему элементу, который может получить фокус)источник
onKeyPress
.event.target.value
недоступнаhandleInput
методе контроллера . Выполнение в соответствии с моим ответом охватило бы вас как при нажатии пользователемsubmit
клавиши ввода, когда он сфокусирован на вводе, так и при активации кнопки / ввода.Ты можешь использовать
event.key
источник
Реагируйте на пользователей, вот ответ для полноты.
Вы либо хотите обновить для каждого нажатия клавиши, либо получить значение только при отправке. Добавление ключевых событий в компонент работает, но есть альтернативы, рекомендованные в официальных документах.
Контролируемые и неконтролируемые компоненты
Управляемая
Из Документов - Формы и Контролируемые компоненты :
Если вы используете контролируемый компонент, вам придется обновлять состояние при каждом изменении значения. Чтобы это произошло, вы привязываете обработчик события к компоненту. В примерах документов, как правило, событие onChange.
Пример:
1) Связать обработчик событий в конструкторе (значение сохраняется в состоянии)
2) Создать функцию обработчика
3) Создать функцию отправки формы (значение берется из состояния)
4) Визуализация
Если вы используете контролируемые компоненты, ваша
handleChange
функция всегда будет запущена, чтобы обновлять и сохранять правильное состояние. Состояние всегда будет иметь обновленное значение, и когда форма будет отправлена, значение будет взято из состояния. Это может быть неудобно, если ваша форма очень длинная, потому что вам придется создать функцию для каждого компонента или написать простую, которая обрабатывает изменение значения каждого компонента.неконтролируемая
Из Документов - Неконтролируемый компонент
Основным отличием здесь является то, что вы используете не
onChange
функцию, аonSubmit
форму для получения значений и проверки при необходимости.Пример:
1) Привязать обработчик события и создать ссылку для ввода в конструкторе (значение не сохраняется в состоянии)
2) Создать функцию отправки формы (значение берется из компонента DOM)
3) Визуализация
Если вы используете неконтролируемые компоненты, нет необходимости связывать
handleChange
функцию. Когда форма отправлена, значение будет взято из DOM, и в этот момент могут произойти необходимые проверки. Нет необходимости создавать какие-либо функции-обработчики для любого из компонентов ввода.Ваша проблема
Теперь для вашего вопроса:
Если вы хотите добиться этого, используйте неконтролируемый компонент. Не создавайте обработчики onChange, если в этом нет необходимости.
enter
Ключ будет представлять форму иhandleSubmit
функцию уволят.Изменения, которые вам нужно сделать:
Удалите вызов onChange в вашем элементе
Обработайте форму отправки и подтвердите ваш вклад. Вам нужно получить значение из вашего элемента в функции отправки формы, а затем проверить. Убедитесь, что вы создали ссылку на ваш элемент в конструкторе.
Пример использования неконтролируемого компонента:
источник
Вы также можете написать небольшую функцию-обертку, как это
Тогда потребляйте это на своих входах
источник