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">
看起来像input
types的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">