关于Select问题 antd

http404
  • 242

比如下面demo代码,我输入888,option里面是没有888的,完后失焦会把刚刚输入的888就会给自动清空了,如果我想把输入的888保留在输入框,完后取到这个值,请问该怎么弄呢

<Select
    placeholder="请选择"
    showSearch={true}
    onChange={this.onChange}
    allowClear={true}
  >
    <Option value='test0'>test0</Option>
    <Option value='test1'>test1</Option>
    <Option value='test2'>test2</Option>
</Select>
评论
阅读 3.1k
5 个回答

你这个是select喔 搜索的内容自然只能在option范围内, 可以用AutoComplete(自动完成)试试

有个这个属性 notFoundContent 下拉列表没有匹配时显示,你可以将你输入的值存在state中,官网列子中有这个 notFoundContent={fetching ? <Spin size="small" /> : this.state.value}。你可以试着按你的需求改改。

我看了下, 用了组件里的onSearch和value,把值存在state里就可以了,赋值的时候做了下判断,blur的时候没匹配到会清空值,所以判断下是否为空

<Select
            placeholder="请选择"
            showSearch={true}
            onSearch={this.onChange}
            onChange={this.onChange}
            allowClear={true}
            value={this.state.value}
          >
            <Select.Option value='test0'>test0</Select.Option>
            <Select.Option value='test1'>test1</Select.Option>
            <Select.Option value='test2'>test2</Select.Option>
          </Select>
onChange=(value)=>{
      if(value!="") this.setState({value})
  }

把Select组件的mode属性改成combobox就没有问题了,亲测有效。
clipboard.png

宣传栏