输入类型“数字”不会调整大小


79

将类型更改为type="number"但可以使用时,为什么不调整输入大小type="text"

    Email: <input type="text" name="email" size="10"><br/>
  number: <input type="number" name="email" size="10">

Answers:


79

似乎该input类型number不支持size属性或与浏览器不兼容,您可以通过CSS进行设置:

input[type=number]{
    width: 80px;
} 

更新小提琴


优秀!这样就可以了。我刚刚注意到的另一件事。数字类型也不允许数字的最大限制,如文本所示。有没有办法解决这个问题?
SaturnsEye 2014年

它确实支持它,您可以在这里看到所有受支持的值:w3.org/TR/html-markup/input.number.html
Felix

我已经知道,maxlength="4"并且它并没有在其中发挥作用text
SaturnsEye 2014年

4
哦,maxlength不支持,仅支持max属性。
Felix

5
如果您要定位特定尺寸,请使用:input[type=number][size="3"]{ width: 3em; }
尼克

52

使用方法不正确。

通过向上和向下箭头使输入类型号具有可选值。

因此,基本上,您正在寻找“宽度” CSS样式。

历史上,输入文本使用等宽字体设置格式,因此大小也就是其宽度。

输入的数字是新的,“ size”属性根本没有意义*。典型用法:

<input type="number" name="quantity" min="1" max="5">

w3c文档

要修复,请添加样式:

<input type="number" name="email" style="width: 7em">

编辑:如果您想要一个范围,您必须设置type="range"而不是="number"

编辑2:*大小不是允许的值(所以,没有意义)。查看官方W3C规格

注意:size属性适用于以下输入类型:文本,搜索,电话,URL,电子邮件和密码。

提示:要指定元素中允许的最大字符数,请使用maxlength属性。


4
在数字输入中说尺寸“一点用都没有”。如果您输入的数字的常规值在2到4之间(这是很常见的),则您将无法控制标准大小,并且整个过程非常庞大。输入似乎永远不会得到爱,因此...“解决方案”只是使用文本,即使您实际上只想要数字也是如此。并非每个页面的设计都基于使所有输入都具有很大的宽度,并且必须指定所有数字输入的宽度是一种回归。
四十

1
这正是size属性的用途,它比用类填充所有输入以及用数十种大小填充整个CSS的效果要好得多,而通过浏览器计算所有不同的输入差异时:)(而且,范围没有这样做)
2015年

2
关键是删除大小是愚蠢的,不是因为“它没有用”。
四十

2
我知道。我的评论旨在澄清您在答案中包含的内容是不正确的。
四十

1
神奇的修复程序,非常style='width:80'感谢您
Fattie

17

而不是设置长度,而是设置数字输入的最大值和最小值。

输入框然后调整大小以适合最长的有效值。

如果要允许3位数字,则将999设置为最大值

 <input type="number" name="quantity" min="0" max="999">

这是我可以在Android上使用移动Chrome浏览器的唯一方法。
狂欢

5

对于<input type=number>HTML5 CR,对于,该size属性是不允许的。但是,在“过时的功能”中说:“尽管本规范中其他地方有相反的要求,但作者不应该,但是可以在类型属性为Number状态的输入元素上指定maxlength和size属性。无论如何使用这些属性的一个有效理由是帮助不支持type =“ number”输入元素的旧式用户代理仍然以有用的宽度呈现文本字段。”

因此,size可以使用该属性,但它只会影响不支持的旧版浏览器type=number,因此该元素将退回给简单的文本控件<input type=text>

这样做的基本原理是,为了获得良好的可用性,期望浏览器提供一个考虑其他属性的用户界面。随着实现的变化,作者施加的任何大小都可能使事情搞砸。(这也适用于在CSS中设置控件的宽度。)

结论是您应该<input type=number>在或多或少的流体设置中使用,该设置不会对元素的尺寸做任何假设。


0

你想要的是maxlength

有效期textsearchurltelemail,和password,它定义字符的最大数目(作为UTF-16代码单位)的用户可输入到该字段。必须为0或更高的整数。如果未指定maxlength或指定了无效值,则该字段没有最大长度。此值还必须大于或等于minlength的值。

您可能考虑使用这些input类型之一。


-1

使用onkeypress事件。邮政编码框示例。它最多允许5个字符,并检查以确保输入仅是数字。

当然,没有什么比服务器端验证更胜一筹了,但这是一个很不错的方法。

function validInput(e) {
  e = (e) ? e : window.event;
  a = document.getElementById('zip-code');
  cPress = (e.which) ? e.which : e.keyCode;

  if (cPress > 31 && (cPress < 48 || cPress > 57)) {
    return false;
  } else if (a.value.length >= 5) {
    return false;
  }

  return true;
}
#zip-code {
  overflow: hidden;
  width: 60px;
}
<label for="zip-code">Zip Code:</label>
<input type="number" id="zip-code" name="zip-code" onkeypress="return validInput(event);" required="required">


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.