给定固定的像素宽度(文本需要适合80px按钮;假设没有填充),如何将用户输入文本字段的文本限制为该限制(80px)。如果它有帮助,我知道字体(Arial)和字体大小(12pt)。
应该实时强制执行限制(用户应该能够删除和添加文本而不提交)。
例如,文本字段应该允许用户输入4“W”或9“I”,只要它在80px下输入。
答案 0 :(得分:5)
您可以使用画布来测量像素完美的宽度。只需创建一个包装器对象来进行测量(因此您不必每次都重新创建画布):
function Measure(font) {
this.canvas = document.createElement("canvas");
this.ctx = this.canvas.getContext("2d");
this.ctx.font = font;
// method to call to measure width in pixels
this.getWidth = function(txt) {
return this.ctx.measureText(txt).width
};
}
// set up a global instance
var m = new Measure("12pt sans-serif");
// get funky
document.querySelector("input").onkeyup = function() {
var w = Math.ceil(m.getWidth(this.value)); // round up in case of float
document.querySelector("span").innerHTML = w;
};

<input style="font:12pt sans-serif"> <span>0</span>
&#13;
答案 1 :(得分:1)
可能你需要像text.width()
这样的东西var test = document.getElementById("Test");
test.style.fontSize = fontSize;
var height = (test.clientHeight + 1) + "px";
var width = (test.clientWidth + 1) + "px";
答案 2 :(得分:0)
我认为该代码可以帮助您:
#id {
width: ;
height: ;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
答案 3 :(得分:0)
在这里抛出一个想法但是,为什么不使用Monospace字体?由于等宽字体字符都是固定宽度,给定字体大小,一些实验和稍后的一些数学,您可以使用字符数将输入限制为80px。