Как вы решаете onBlur/onFocus проблему?

Вешаешь onBlur/onFocus на элемент и при повторном клике на элемент(ребенка) фокус и блюр срабатывают лишний раз ломая мой выпадающий датапикер Ясное дело что есть другие способы решить задачу но ведь с блюром/фокусом это было бы вроде логичнее
render: function () {
        var component = this;
        var props = component.props;
        var state = component.state;

        return (
            <div>
                <label onFocus={component.onOpenDateRangePicker} onBlur={component.onCloseDateRangePicker}>
                    <input
                        className="date-range-picker-input"
                        value={component.state.value}/>

                    <div className={classNames('date-picker-wrapper', {hidden: !state.isOpened})}>
                        <DateRangePicker />
                    </div>
                </label>
            </div>
        );
    },
    onOpenDateRangePicker: function (event) {
        var component = this;
        debugger;

        component.setState({
            isOpened: true
        });
        console.log('focus');
    },
    onCloseDateRangePicker: function (event) {
        var component = this;
        debugger;
        component.setState({
            isOpened: false
        });
        console.log('blur');
    }

Как вы решаете эту проблему?
  • Вопрос задан
  • 11350 просмотров
Пригласить эксперта
Ответы на вопрос 2
ngreduce
@ngreduce
Попробуйте вешать onFocus/onBlur на input.
Только что проверил в своем приложении и не наблюдаю такого эффекта.
Ответ написан
Комментировать
art1z
@art1z
Программист-многостаночник в EffectiveSoft
Проверяй реальный target ивента, как-нибудь так:
if(event.target.localName != 'input')
return;

https://jsfiddle.net/wxm0087c/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы