javascript - antd 输入搜索组件不会在 blur() 上变得模糊

标签 javascript reactjs input antd

我正在使用 antd 库的搜索输入组件。它带有一个回调函数 onSearch,我们可以在其中捕获事件目标并可以使用全局输入函数,如 blur()、focus()。但这似乎不起作用。如果我附加任何其他事件处理程序,如 onClick 或 onChange,它就会起作用。是错误还是我做错了什么。

import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import './index.css';
import { Input } from 'antd';

const Search = Input.Search;

ReactDOM.render(
  <div>
    <Search
      placeholder="input search text"
      onSearch={(value,e) => {
        console.log(e.target);
        e.target.blur();
        console.log(value)
        }}
      enterButton
      onChange={e => {
        console.log(e.target)
        e.target.blur()}}
    />
  </div>,
  document.getElementById('container')
);

最佳答案

这是因为 antd 在 handler 之后重新聚焦它。您可以在 blur 处理程序上使用 setTimeout 以使其正确模糊。

但是使用 event.target 只能在回车键上工作,你必须在输入上使用 ref 元素才能让它在按钮上工作。

<Search
  placeholder="input search text"
  onSearch={(value, e) => {
    const input = this.input.current;
    setTimeout(() => input.blur(), 0);
  }}
  enterButton
  ref={this.input}
/>

查看示例 here

关于javascript - antd 输入搜索组件不会在 blur() 上变得模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53701394/

相关文章:

javascript - 一个多个输入字段的jquery总和

Java 流键盘输入

javascript - 循环通过循环按钮元素来操作循环输入

javascript - head 中定义的 vb.net JS 函数未在 onLoad 中定义

java - 如何从 JavaScript 调用 Java 实例的方法?

reactjs - 谁能帮我将此 HOC 转换为 Render Prop

Javascript 将 JSONP 数据从字符串转换为 Json 对象

javascript - 使用 React 动态标题标题

reactjs - Reactstrap Fieldset 图例不是方形显示

html - 显示两个彼此相邻的输入,每个 html 上方都有标签