Введите обработчик ключевого события в компоненте response-bootstrap.

У меня есть компонент Input с кнопкой (свойство buttonAfter), я устанавливаю обработчик onClick, связанный с кнопкой, и поэтому пользователь может ввести текст и нажать кнопку, чтобы запустить правильное действие.

Тем не менее, я хотел бы, чтобы пользователь мог нажать клавишу [Enter] (keycode 13), чтобы добиться того же эффекта, что и нажатие кнопки, чтобы упростить использование интерфейса.

Я не мог найти способ сделать это, конечно же, я попробовал onKeydown зарегистрировать обработчик для события key down, но он просто проигнорирован.

Ответы

Ответ 1

Я думаю, что этот вопрос связан с самим Реагированием, а не с реакцией-бутстрапом.

Посмотрите на это для некоторых основ системы событий React: https://facebook.github.io/react/docs/events.html

Когда вы используете onKeyDown, onKeyPress или onKeyUp React передают вашему обработчику экземпляр объекта "target" со следующими свойствами:

boolean altKey
номер charCode
... (для всех см. ссылку выше)

Итак, вы можете сделать что-то вроде этого:

import React, { PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { Input } from 'react-bootstrap';

class TestInput extends React.Component {

handleKeyPress(target) {
    if(target.charCode==13){
            alert('Enter clicked!!!');    
    }

}

render() {
  return (
    <Input type="text" onKeyPress={this.handleKeyPress} />
  );
 }
}

 ReactDOM.render(<TestInput />, document.getElementById('app'));

Я тестировал выше код, и он работает. Надеюсь, это поможет вам.

до свидания

Ответ 2

Вопрос также может быть связан с React-bootstrap. React-bootstrap также имеет способ обрабатывать экземпляр, когда нажата кнопка или введите ключ или любой элемент формы.

В приведенном ниже коде объясняется, как обрабатывать экземпляр, когда нажата клавиша enter без участия обработчиков React. (и это делает ее крутой)

import React from "react";
import ReactDOM from "react-dom";
import { FormGroup, FormControl } from "react-bootstrap";

class TestInput extends Component {

  search() {
    console.log("Enter Button Pressed");
  }

  render() {
    return (
      <FormGroup>

        <InputGroup>
          <FormControl
            placeholder="Press Enter"
            type="input"
            onKeyPress={event => {
              if (event.key === "Enter") {
                this.search();
              }
            }}
          />
        </InputGroup>

      </FormGroup>
    );
  }
}

React Bootstrap больше не поддерживает элемент формы ввода. Вместо этого он представил ниже предметы в вашем распоряжении

Компонент FormGroup обертывает элемент управления формой с правильным интервалом, а также поддерживает метку, текст справки и состояние проверки.

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

Компонент FormControl отображает элемент управления формы с помощью стиля Bootstrap.

Литература:

https://react-bootstrap.github.io/components.html#forms https://react-bootstrap.github.io/components.html#forms-input-groups