HTMLinputtypes“数字”不会resize

为什么我的input不能resize,当我改变types为type="number"但它与type="text"

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

看起来像inputtypes的number不支持size属性,或者它不是沿着浏览器兼容,你可以通过CSS设置:

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

更新小提琴

不正确的用法。

inputtypes编号通过向上和向下箭头可select的值。

所以基本上你正在寻找“宽度”CSS样式。

历史上的input文本是用等宽字体格式化的,所以它的大小也是它所需要的宽度。

input号码是新的,“尺寸”属性根本没有意义*。 典型用法:

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

w3c文档

修复,添加一个风格:

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

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

EDIT2:*大小不是一个允许的值(所以,没有意义)。 查看官方的W3C规范

注:尺寸属性适用于以下inputtypes:文本,search,电话,url,电子邮件和密码。

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

对于<input type=number> ,通过HTML5 CR, size属性是不允许的。 然而,在Obsolete特性中,它表示:“作者不应该,但是尽pipe本规范中的其他地方有相反的要求,但是在types属性处于Number状态的input元素上指定maxlength和size属性。 使用这些属性的一个合理原因无论是帮助不支持type =“number”的input元素的传统用户代理仍然使用有效宽度来呈现文本字段。

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

这背后的理由是,浏览器将提供一个用户界面,其中考虑到其他属性,以提高可用性。 由于实现可能会有所不同,作者施加的任何大小可能会搞砸了。 (这也适用于在CSS中设置控件的宽度。)

结论是,您应该在一个或多或less的stream动设置中使用<input type=number> ,而不会对元素的尺寸做任何假设。

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

input框然后resize以适应最长的有效值。

如果你想允许一个3位数字,然后设置999作为最大值

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

使用onkeypress事件。 一个邮政编码框的例子。 它允许最多5个字符,并检查以确保input只有数字。

没有什么比服务器端validation当然,但这是一个漂亮的路要走。

 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">