React Semantic UI Date类型Input默认占位符无法移除的解决咨询
移除Semantic UI React Date输入框的默认占位符
你遇到的这个问题,根源在于date类型的输入框自带浏览器原生的占位提示(比如yyyy-mm-dd这类格式文本),它不受Semantic UI React的placeholder属性控制,所以哪怕把placeholder设为空也无法去掉。
下面是两种可行的解决办法:
方法1:用CSS隐藏原生占位提示
给输入框添加自定义类名,通过CSS覆盖浏览器的默认样式:
- 给
Form.Input追加自定义类:
<Form.Input name='StartDate' type='date' placeholder='' label='Start Date' readOnly={true} onChange={handleChange('StartDate')} value={startDate?moment(startDate).utc().format("YYYY-MM-DD"):''} className="hide-date-placeholder" />
- 添加对应的CSS样式(针对WebKit内核浏览器,如Chrome、Safari):
.hide-date-placeholder::-webkit-datetime-edit-text, .hide-date-placeholder::-webkit-datetime-edit-month-field, .hide-date-placeholder::-webkit-datetime-edit-day-field, .hide-date-placeholder::-webkit-datetime-edit-year-field { color: transparent; }
如果需要兼容Firefox,可以额外补充针对Firefox的伪元素样式,核心思路都是把原生占位的文本颜色设为透明。
方法2:用普通文本输入框模拟(适合只读场景)
因为你的输入框设置了readOnly={true},完全可以改用type='text'的输入框,直接展示格式化后的日期值,彻底避开浏览器的原生date控件行为:
<Form.Input name='StartDate' type='text' label='Start Date' readOnly={true} value={startDate?moment(startDate).utc().format("YYYY-MM-DD"):''} />
这种方法无需处理浏览器兼容性,实现起来更简单,非常适合只读的展示场景。
内容的提问来源于stack exchange,提问作者Nillogical
相关产品推荐
相关产品推荐

