效果很好,因为它会在只包含数字的输入字段上显示数字键盘。然而,在 Chrome 和 Safari 中,使用数字输入会在字段右侧显示旋转按钮,这在我的设计中看起来很垃圾。我真的不需要这些按钮,因为无论如何当你需要写一个像 6 位数字这样的东西时,它们是......" /> 效果很好,因为它会在只包含数字的输入字段上显示数字键盘。然而,在 Chrome 和 Safari 中,使用数字输入会在字段右侧显示旋转按钮,这在我的设计中看起来很垃圾。我真的不需要这些按钮,因为无论如何当你需要写一个像 6 位数字这样的东西时,它们是......"> 效果很好,因为它会在只包含数字的输入字段上显示数字键盘。然而,在 Chrome 和 Safari 中,使用数字输入会在字段右侧显示旋转按钮,这在我的设计中看起来很垃圾。我真的不需要这些按钮,因为无论如何当你需要写一个像 6 位数字这样的东西时,它们是......" />
ChatGPT解决这个技术问题 Extra ChatGPT

在 input type="number" 上禁用 webkit 的旋转按钮?

我有一个主要面向移动用户的网站,但也适用于桌面用户。

在 Mobile Safari 上,使用 <input type="number"> 效果很好,因为它会在只包含数字的输入字段上显示数字键盘。

然而,在 Chrome 和 Safari 中,使用数字输入会在字段右侧显示旋转按钮,这在我的设计中看起来很垃圾。我真的不需要这些按钮,因为无论如何当你需要写一个像 6 位数字这样的东西时,它们是无用的。

是否可以使用 -webkit-appearance 或其他一些 CSS 技巧来禁用它?我试过没有太多运气。

如果您出于其他原因更喜欢使用 type="text" 并且只切换到数字键盘功能,您可以使用 pattern="[0-9]*" 获取键盘功能,让您保留 type="text"。请参阅stackoverflow.com/questions/6171903/…

C
Community

我发现这个答案还有第二部分。

The first portion 帮助了我,但我的 type=number 输入右侧仍有空间。我已将输入的边距归零,但显然我也必须将微调器的边距归零。

这修复了它:

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

惊人的。我有一个 similar issue,但 CSS 策略略有不同,这会导致全新的问题......
有谁知道修复滚动行为的方法,您可以无限地上下滚动?我在输入元素中设置了 min=0.01(和 max 为任意值),但我更希望滚轮在页面上上下移动。我正在使用 AngularJS,但我找不到任何自动取款机。
链接回此特定问题和此类信息的权威来源:css-tricks.com/snippets/css/turn-off-number-input-spinners
需要明确的是,这不会删除鼠标滚动功能!
-moz-appearance:Firefox 的文本字段
R
Rolwin Crasta

下面的 CSS 适用于 Chrome 和 Firefox

input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type=number] {
    -moz-appearance:textfield;
}

比上面更好的解决方案(更完整)
-moz 外观:文本字段;加法是唯一对我有用的答案。谢谢!
r
robertc

不确定这是否是最好的方法,但这会使微调器在 Chrome 8.0.552.5 dev 上消失:

input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
}

@JethroLarson 什么不起作用?您可以改用 -webkit-outer-spin-button
这对 type="date" 很有效: input[type=date]::-webkit-outer-spin-button { -webkit-appearance: none; }
G
Goulven

阻止微调器出现在 Opera 中似乎是不可能的。作为临时解决方法,您可以为微调器腾出空间。据我所知,以下 CSS 仅在 Opera 中添加了足够的填充:

noindex:-o-prefocus,
input[type=number] {
    padding-right: 1.2em;
}

@Knu 确实,但这里值得一提,因为答案中的代码使输入无法在 Opera 中使用。
@Goulvench 请不要:) 我发现它非常有用,其他人也可能。
S
SridharKritha

通过更改来避免 number type 的浏览器默认微调器的另一种解决方案

输入文本输入模式输入数字和仅数字模式“[0-9]*”

    <input type="text" inputmode="numeric" pattern="[0-9]*" />

与“数字”类型不同,上述方案仍然允许用户在输入框中输入非数字字符,但您可以通过监听 oninvalid 事件来避免无效提交。


S
Sébastien Varinois

您还可以使用以下技巧隐藏微调器:

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  opacity:0;
  pointer-events:none;
}