如何使之其内容的尺寸相匹配计算输入HTML元素的宽度? 我已经即时更新的用户类型的输入:
<input type='text' onkeydown='this.size=this.value.length' />
然而,这似乎并不完全正确,因为它没有考虑到一个事实,即一些字符比一般人长:
- 我会得到越来越多的空白,如果我只需键入一些“L”字符
- 规模将是不够的,如果我只键入一些“W”字
如何进行?
PS:为什么我要做到这一点(已被删除一个答案回答了这个)? 我在我不得不更换通过输入托架内容的句子(例如:[用户]为[岁]左右)。 我不知道这句话可能是什么,所以我不知道该输入足够的长度,我想保持可读在同一行(避免过多的空格)。
你可以使用一个(隐藏)画布和measureText()
上下文的方法,让您的字符串的宽度。
编辑:
看起来不够快 。
首先,定义一些CSS ...
input,
#input-helper {
display: inline;
font-size: 14px;
font-family: serif;
line-height: 16px;
}
#input-helper {
position: absolute;
top: -10000px;
}
...然后用一些JavaScript ...
var div = document.createElement("div");
div.id = "input-helper";
document.body.appendChild(div);
var input = document.querySelector("input");
input.addEventListener("keyup", function() {
div.textContent = this.value;
input.style.width = div.offsetWidth + "px";
});
的jsfiddle 。
您将要选择适合您一个合理的起始宽度input
元素太多。
如果使用jQuery是没有问题的,这里是一个演示中,我放在一起上的jsfiddle 。 它使用一个Autoexpand.js
文件,你想要做什么。 退房的最后一个例子中的小提琴。
一些具体:
- 它基于
.keyup
和.keypress
最快响应可能的。 - 它考虑到粘贴之成箱的HTML标记。 比如像换行符被处理。
- 源文件通过采取有关字体考虑一切都显示智能处理。
还包括在被的jsfiddle链接下载小提琴的引擎收录的版本,因为在IE8的jsfiddle沙箱破裂。 这就是说,它也适用于IE7呢!
第一:添加这个div你想要
<div id="calcsize" style="display:none;"></div>
第二:使用此功能
function getWidthof(txt)
{
$('#calcsize').empty().append(txt);
return $('#calcsize').width();
}
文章来源: How to calculate the width of an input HTML element so that it matches the size of its content?