我试图在选择时间时限制用户输入input=time
。那么是否可以从输入中禁用小清除按钮?
3 回答
只需添加required
属性:
<input type="date" required>
我在 Chrome 中对其进行了测试,它对我来说运行良好。
您对所有最新浏览器的直接解决方案可能是:
input[type="time"]::-webkit-clear-button {
display: none;
}
如果你愿意只为 Internet Explorer 10 指定它,你应该使用
::-ms-clear
pseudo-element来设置它的样式:
input[type="time"]::-ms-clear {
display: none;
}
您也可以使用width
andheight
对所有input
元素执行此操作:
input::-ms-clear {
width: 0;
height: 0;
}
如果您只想将其应用于文本类型的输入:
input[type=text]::-ms-clear {
display: none;
}
编辑1:
如果还是不行,那么你必须确保你没有在F12工具中选择IE10/Standard以外的浏览器/文档模式!
编辑2:
此外,您可能会发现其他有趣的伪控件:
/* Hide the cancel button */
::-webkit-search-cancel-button {
-webkit-appearance: none;
}
/* Hide the magnifying glass */
::-webkit-search-results-button {
-webkit-appearance: none;
}
/* Remove the rounded corners */
input[type=search] {
-webkit-appearance: none;
}
TL;DR 没有纯 HTML 或基于 CSS 的方式来输入时间并删除适用于所有主要浏览器的清除按钮。要为所有浏览器解决此问题,您应该使用 JavaScript 库和服务器验证(如果您想确保用户发送有效数据)。如果您不想使用 JS,那么最好同时使用以下两种方法。有关兼容性的比较,请参见下表:
+---------+-------------------------+--------------+-------------+
| | <input required> | CSS approach | JS approach |
+---------+-------------------------+--------------+-------------+
| Firefox | Y | N | Y |
| Chrome | Y | Y | Y |
| Safari | N | Y | Y |
+---------+-------------------------+--------------+-------------+
CSS 方法
@Ilia Rostovtsev 解释的前缀伪元素(::-webkit-*
, ::-ms-*
, ::-moz-*
)是特定于浏览器的,不是标准的,尽管许多特定于浏览器的元素最终被采用为标准,即使这些非标准伪元素中的一些被大多数或全部采用主流浏览器。目前,我不知道有任何 Firefox 等效于webkit
和ms
答案。
状态:适用于除 Firefox 之外的所有浏览器
required
方法
<input type="time" required>
看起来不错,在 Chrome 和 Firefox 上运行良好,但在 Safari 上无法运行。事实上,Safari 没有time
ordate
类型。
状态:无法在 Safari 上运行
JS解决方案
如果您希望它适用于所有浏览器,请使用js-datepicker 之类的 JS 库。它已经过测试可以跨浏览器工作并限制用户输入,没有清除按钮。
服务器验证注意事项
如果您完全关心您的后端数据以及它是如何存储的(提示:您应该),那么也要在后端验证它!在前端限制用户输入不会阻止它被一个坚定或困惑的用户搞砸。服务器验证有助于避免奇怪的错误或 XSRF 注入尝试。