【发布时间】:2023-04-04 01:57:01
【问题描述】:
在给定动态宽度(例如宽度 = 100%)的情况下,JavaScript 中是否可以获取输入字段上可以显示的最大字符数?
例如,如果输入字段的值为“123456789”,由于宽度限制,只有“1234567”可显示/可见,最大可显示字符数为“7”。
示例布局:
----------
|01234567|
----------
当前代码:(我遇到了不同字体样式的问题。另外,还没有考虑字体间距。getFontSize 的代码来自here。)
function countLetters()
{
var inputLong = document.getElementById('inputLong');
var fontSize = getFontSize(inputLong);
var fieldWidth = getWidth(inputLong);
console.log('Number of Visible Characters: ' + (fieldWidth / fontSize) );
}
function getFontSize(parentElement)
{
return Number(getComputedStyle(parentElement, "").fontSize.match(/(\d*(\.\d*)?)px/)[1]);
}
function getWidth(parentElement)
{
return parentElement.offsetWidth;
}
【问题讨论】:
-
最大字符数取决于那里出现的字符等等。解释为什么你会想要计算这样一个数量可能很有用,这实际上甚至不是一个定义明确的概念。 (从字面上看,答案是无限的,因为你可以呈现任意数量的零宽度字符......)
-
@JukkaK.Korpela:这样做的原因是我希望能够在 Android 股票浏览器的输入字段上显示省略号。虽然文本溢出适用于 Chrome,但它不适用于 Android 股票浏览器。所以我只剩下 JavaScript 解决方案了。我的计划是使用 JavaScript 在输入字段的可见字符上应用省略号,这就是为什么我需要首先确定输入字段可以显示的字符数。
-
那么我认为您需要一个循环,从末尾删除字符,直到剩余的字符串加上省略号适合可用宽度。但重新考虑需要具有此类行为的输入字段的原因可能会更有成效。
标签: javascript html