示例http://dabblet.com/gist/5859946
如果您有一个长占位符,则默认情况下输入显示的宽度不足以显示所有占位符文本。
例如
<input placeholder="Please enter your name, address and shoe size">
如果不设置固定宽度,最好不设置 javascript,您可以设置输入以显示所有占位符文本吗?
示例http://dabblet.com/gist/5859946
如果您有一个长占位符,则默认情况下输入显示的宽度不足以显示所有占位符文本。
例如
<input placeholder="Please enter your name, address and shoe size">
如果不设置固定宽度,最好不设置 javascript,您可以设置输入以显示所有占位符文本吗?
这只能通过 javascript 通过设置 size = 占位符长度来完成:
input.setAttribute('size',input.getAttribute('placeholder').length);
这是一个针对所有输入的代码:http: //jsfiddle.net/KU5kN/
以防万一有人想将它与 jQuery 一起使用,该代码将在下面。此外,如果placeholder
接受的答案中不存在该属性,您将收到错误,下面的 jQuery 示例也处理了这些错误。
$("input[placeholder]").each(function () {
$(this).attr('size', $(this).attr('placeholder').length);
});
我采用了 Avner Solomon 的解决方案,正如上述部分之一的评论中所建议的那样。
您需要一个包含标签的div
元素input
和另一个div
包含标签的元素:
<div class="input-container">
<!-- this element is hidden from display and screen readers. -->
<div class="input-hidden-label"
aria-hidden="true">
Your placeholder text
</div>
<input class="input"
type="text"
placeholder="Your placeholder text"/>
</div>
假设 theinput-hidden-label
和 the的字体样式input
相同,您将在输入旁边看到一行文本。文本将与输入的长度相同,给出或占用几个像素。
然后,您可以应用这些样式:
.input-container {
display: inline-block;
margin-bottom: 2em;
}
.input {
display: inline;
width: 100%;
font-size: 16px;
font-family: Times;
}
.input-hidden-label {
height: 0;
visibility: hidden;
}
这通过提供height: 0
和删除标签来隐藏标签visibility
。但是,width
遗迹。div
包含input
且标签匹配其width
最长子项的 。如果您随后将 设置input
为width: 100%
,它将与已匹配占位符的父宽度匹配。
注意事项
这个想法不是很容易获得,这个解决方案也不是。您应该为输入包含一个标签,而不是依赖占位符本身作为标签。
我想到的解决方法:
http://jsfiddle.net/Timar/cwLp3rbo/
var input = document.getElementById('input-1');
// measure width of same text as placeholder
var placeholder = document.getElementById('input-1-placeholder');
input.style.width = placeholder.offsetWidth + "px"