【问题标题】:How can I adjust the width of the Input field based on the Placeholder text?如何根据占位符文本调整输入字段的宽度?
【发布时间】:2018-11-07 17:04:55
【问题描述】:
我有一个固定宽度的输入字段。 (例如:200px)和占位符文本有更多的字母。
如何根据占位符文本/宽度动态更改输入字段的宽度?
【问题讨论】:
-
基于answer 你可以这样做: $('input').css('width',((input.getAttribute('placeholder').length + 1) * 8) + 'px');
-
标签:
html
css
css-transitions
【解决方案1】:
将size 设置为input
var inputs = document.getElementsByTagName('input');
for(i=0; i<inputs.length; i++){
inputs[i].setAttribute('size',inputs[i].getAttribute('placeholder').length);
}
<input placeholder="I am a long text...I am a long text...I am a long text "/>
【解决方案2】:
这里是如何做到这一点的链接 - https://jsfiddle.net/4s03razg/
<div>
<script>
var prevLen = 50;
window.resizeBox = function() {
var elem = document.getElementById("resizable-input");
if(elem.value && elem.value.length > 5) {
prevLen += 10;
elem.style.width = prevLen + "px";
}
};
function initializeBox() {
var elem = document.getElementById("resizable-input");
elem.style.width = prevLen + "px";
}
initializeBox();
</script>
<input id="resizable-input" type="text" onkeypress="resizeBox()"/>
</div>
这只是一个例子。您必须使用正确的数字和事件来触发调整大小。我认为,您最好在通过事件的方法调用中使用“this”来获取元素。
【解决方案3】:
您可以使用 javascript 或 jquery 来执行此操作,获取占位符的长度,然后将其分配给输入大小;
JS 代码:
input.setAttribute('size',input.getAttribute('placeholder').length);
或者,
jQuery:
$("input[placeholder]").each(function () {
$(this).attr('size', $(this).attr('placeholder').length);
});