提问人:Pekka 提问时间:12/26/2009 更新时间:7/25/2017 访问量:30568
“滚动”到长文本输入的最右侧
"Scroll" to the very right of a long text input
问:
我有一个图像选择器,允许从图库中选择图像,然后将 URL 填写到字段中。URL 可能非常长,并且总是在文本字段中看到 URL 的前半部分几乎没有信息价值。<input type="text">
有人知道一种将“滚动”到文本字段最右侧的方法,以便 URL 的末尾而不是开头可见?无需求助于文本区域。
答:
除IE6-8/Opera以外的所有浏览器
在显式设置 .
缺点是一旦模糊,它就会滚动回去开始。focus()
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
foo.focus();
foo.setSelectionRange(foo.value.length,foo.value.length);
<input id="foo">
除IE/Opera以外的所有浏览器
如果您不关心 IE 的全部内容,请将 Element.scrollLeft
设置为 Element.scrollWidth
。缺点是浏览器支持较少。
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
foo.scrollLeft = foo.scrollWidth;
<input id="foo">
所有浏览器
如果您想支持每个浏览器,请考虑使用您设置为(从右到左)的 (direction) 属性来欺骗它。缺点是,当它是可编辑的和/或您开发一个对方向敏感的网站时,它确实需要考虑它,但这适用于所有浏览器,并且非常适合只读输入。dir
rtl
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
<input id="foo" dir="rtl">
评论
dir
direction: rtl
text-align: left
‎
‏
scrollLeft
更好的解决方案是使输入足够大,以便看到最合理的长度 URL。输入的默认宽度通常非常短。通过减小字体大小和增加宽度(可能增加百分比以填充可用空间),您可能会使 url 的长度与浏览器的 url 栏一样长或更长。您实际上并不需要非常大的 url 文本,因为您可能只是在验证它看起来是否合理,而不是阅读它。
如果能够以相对较大的字体查看整个 url 很重要(如果用户应该是高级用户并且可能会手动编辑 url),则应使用文本区域进行修改。随机换行的 url 看起来有点奇怪,但只要你不插入空格,url 应该仍然有效。
如果您的 Web 服务器负责生成 URL,您可以尝试使其不那么冗长。如果可以使用相对 url(跳过域部分),也可以节省空间。
$('#myInput').get(0).scrollLeft = $('#myInput').get(0).scrollWidth;
评论
Lucman Abdulrachman 的答案是最好的,但我不能支持它,所以我在不使用 jQuery 的情况下添加了另一个解决方案:
var elem = document.getElementById('myInput');
elem.focus();
elem.scrollLeft = elem.scrollWidth;
评论
你可以简单地将CSS属性方向设置为“rtl”(从右到左),不需要JS。 这将改变滚动方向和文本对齐方式,因此当文本短于输入的大小时,它可能看起来很奇怪,但鉴于输入将始终包含长 url,这应该不是问题。
input {
margin: 10px;
direction: rtl;
}
<input type="text" value="short url" size="20">
<br>
<input type="text" value="https://developer.mozilla.org/en-US/docs/Web/CSS/direction" size="20">
我希望这会有所帮助。
评论