You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Antd Input.Search组件搜索后设置输入框只读?

解决Antd Input.Search单独禁用输入框的问题

这个问题我之前也碰到过!Antd的Input.Search组件直接用disabled属性确实会把输入框和搜索按钮一起禁用,不过咱们可以通过inputProps这个属性单独控制内部的输入框,完美避开按钮被禁用的问题~

给你两种实用方案,根据你的视觉和交互需求选就行:

方案1:设置输入框为只读(视觉无变化,不可编辑)

如果希望输入框看起来和正常状态一样,但用户不能修改内容,用readOnly属性最合适。修改你的代码如下:

<Input.Search
  enterButton={inProgress ? 'Cancel' : 'Search'}
  onSearch={text => this.go(text)}
  allowClear={inProgress ? false : true}
  inputProps={{ readOnly: inProgress }} // 仅控制输入框只读
/>

方案2:设置输入框为禁用状态(视觉变灰,不可编辑)

如果需要明确展示输入框的禁用状态(变灰),但保留按钮的可点击性,就给内部输入框单独传disabled属性:

<Input.Search
  enterButton={inProgress ? 'Cancel' : 'Search'}
  onSearch={text => this.go(text)}
  allowClear={inProgress ? false : true}
  inputProps={{ disabled: inProgress }} // 单独禁用输入框,按钮不受影响
/>

原理说明

Input.Search的inputProps属性会把你传入的配置透传给组件内部原生的<input>元素,这样就能精准控制输入框的状态,而不会影响到右侧的搜索/取消按钮。另外你原来代码里的disabled={inProgress ? false : true}可以直接去掉,因为我们已经通过inputProps单独处理输入框的状态了。

内容的提问来源于stack exchange,提问作者Nili

火山引擎 最新活动