HTML <input> 大小属性不起作用?

标签 html input

我有以下指定 size="15"的元素。但是,具有 size 属性的呈现元素的宽度适合 25 个字符,如果 maxlength 更大,则可以容纳 30 个左右? Maxlength 确实限制了字符数。

<input id="txtSearch" name="txtSearch" type="text" maxlength="25" size="15" />

最佳答案

等宽字体

我见过的最好的结果来自于使用等宽字体:

<input type="text" size="4" style="font-family:monospace" />

在线示例:http://jsbin.com/epagi/edit在 Firefox、Chrome、Safari 和 IE 中完美呈现。

如果您使用的是可变宽度字体,则必须使用脚本来更好地猜测预期宽度,但正如您所说,这不是很优雅。

可变宽度字体

我尝试为可变宽度字体制定一个合理而简单的解决方案,但最终您需要查看它是否适合您的项目。

基本上我所做的是设置 text-transformuppercase 的特定输入得到一个半一致的预期,当填充文本时,会有多宽。然后我应用了一个类名,指示该字段应该自动调整大小,以及我们期望的字符数:sizeMe-4 .使用 jQuery,我收集了所有这些输入,并拆分了这个类名以获得预期的字符数。

我扩展了 String 对象以包含一个 repeat 方法,它允许我轻松地创建一个预期大小的字符串,并将它添加到一个临时 span 元素以获得宽度。然后将该宽度追溯应用到初始输入元素。然后丢弃跨度。

在线演示:http://jsbin.com/epagi/2/edit

为方便起见,代码如下:

<input type="text" name="pin" maxlength="4" class="sizeMe-4" 
       style="text-transform:uppercase" />

--

String.prototype.repeat = function(num) {
    return new Array( num + 1 ).join( this );
}

$(function(){
  $(":input[class^='sizeMe']").each(function(){
    var size = Number($(this).attr("class").split("-").pop());
    var newW = $("<span>").text( "X".repeat(size) ).appendTo("body");
    $(this).width( $(newW).width() );
    $(newW).remove();
  });
});​

关于HTML &lt;input&gt; 大小属性不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077483/

相关文章:

javascript - 接受部分用户输入字符串

java - 校准操纵杆的算法

html - 如何在我的案例中设置类(class)

javascript - 使用 Vue JS 将参数作为 Html 中的变量传递给模板的问题

javascript - 添加时在一行中的两列中显示两个表

html - 用于动态绑定(bind)的挖空js中的css样式

jquery - 使边框/轮廓适合可见的 CSS

javascript - 显示占位符,直到用户输入不带空格的文本

python - 在python中对字符串应用过滤器

javascript - 防止加法输入