是否有一种跨浏览器的一致方式来隐藏一些浏览器(如Chrome)为数字类型的HTML输入呈现的新旋转框?我正在寻找一个CSS或JavaScript方法,以防止向上/向下箭头出现。
<input id="test" type="number">
是否有一种跨浏览器的一致方式来隐藏一些浏览器(如Chrome)为数字类型的HTML输入呈现的新旋转框?我正在寻找一个CSS或JavaScript方法,以防止向上/向下箭头出现。
<input id="test" type="number">
当前回答
我需要这个成功
/* Chrome, Safari, Edge, Opera */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button
-webkit-appearance: none
appearance: none
margin: 0
/* Firefox */
input[type=number]
-moz-appearance: textfield
外表的额外线条:对我来说都不是关键。
其他回答
我在输入[type="datetime-local"]时遇到过这个问题,它与这个问题类似。
我已经找到了克服这类问题的方法。
首先,你必须打开chrome的阴影根功能“DevTools ->设置->通用->元素->显示用户代理阴影DOM”
然后你可以看到所有阴影DOM元素,例如,对于<input type="number">,带阴影DOM的完整元素是:
< input type = "数量" > <div id="text-field-container" pseudo="-webkit-textfield-decoration-container"> < div id = " editing-view-port " > < div id = " inner-editor " > < / div > < / div > <div pseudo="-webkit-inner-spin-button" id="spin"></div> . < / div > 输入> < /
根据这些信息,你可以起草一些CSS来隐藏不需要的元素,就像@Josh说的那样。
如果您试图隐藏浏览器添加的控件,这应该是您滥用该输入类型的提示。
标准一致性问题
来自type=number的HTML规范:
type=number状态不适合只由数字组成但严格来说不是数字的输入。例如,它不适用于信用卡号或美国邮政编码。
(重点是我的)
可用性问题
在GOV.UK团队进行的可用性研究中,发现<input type=number>有问题。该团队维护着世界上最著名的设计系统之一,并得出结论,这种输入类型:
使用Dragon natural时不能被指定或选择 说话 在NVDA的元素列表中显示为未标记 在NVDA的对象导航中显示为旋转按钮,其中有一个编辑字段和两个按钮-这些按钮是未标记的, 但是减少/增加价值 当使用nvda+标签时,被报告为未标记的编辑字段
可选择的解决方案
相反,他们建议使用<input type="text" inputmode="numeric" pattern="[0-9]*">,这可以得到@team_steve和@youjin的组合答案。这不仅隐藏了旋转框,还提高了元素的整体可用性。
不用说,还需要进行额外的验证,以及有用的错误文本。
<标记>邮政编码 <input type="text" inputmode="numeric" pattern="[0-9]*" size="5"> < / >标签
这就像你的css代码:
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
不是你要求的,但我这样做是因为WebKit中的spinboxes的焦点bug:
// temporary fix for focus bug with webkit input type=number ui
if (navigator.userAgent.indexOf("AppleWebKit") > -1 && navigator.userAgent.indexOf("Mobile") == -1)
{
var els = document.querySelectorAll("input[type=number]");
for (var el in els)
el.type = "text";
}
它可能会给你一个想法来帮助你。
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
/* Firefox */
input[type=number] {
-moz-appearance: textfield;
}
源