Javascript &引用;卷轴;在长文本输入的最右边

Javascript &引用;卷轴;在长文本输入的最右边,javascript,html,css,Javascript,Html,Css,我有一个图像选择器,可以从图库中选择图像,然后将URL填充到字段中。URL可能非常长,总是在文本字段中看到URL的前半部分几乎没有信息价值 有人知道一种方法可以“滚动”到文本字段的最右边,从而使URL的结尾而不是开头可见吗?无需使用文本区域。除IE6-8/Opera外的所有浏览器 显式设置focus()后,设置为输入值的长度。缺点是一旦模糊,它就会向后滚动开始 var foo=document.getElementById(“foo”); foo.value=”http://stackover

我有一个图像选择器,可以从图库中选择图像,然后将URL填充到
字段中。URL可能非常长,总是在文本字段中看到URL的前半部分几乎没有信息价值

有人知道一种方法可以“滚动”到文本字段的最右边,从而使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)

更好的解决方案是使输入足够大,以查看最合理长度的URL。输入的默认宽度通常很短。通过减小字体大小和增加宽度(可能通过一个百分比来填充可用空间),您可能会使url的ar比浏览器的url栏长或长,可见。你并不需要一个非常大的url文本,因为你可能只是验证它是否合理,而不是阅读它

如果能够以相对较大的字体查看整个url是很重要的(如果预期用户是高级用户,并且可能会手动编辑url),则应使用文本区域进行编辑。使用随机包装的url看起来有点奇怪,但只要不插入空格,url应该仍然有效

如果您的web服务器负责生成url,您可以尝试使其不那么冗长。如果可以使用相对url(跳过域部分),也可以节省空间

的答案是最好的,但我无法对其进行升级,因此我添加了另一个解决方案,而不使用jQuery:

var elem = document.getElementById('myInput');
elem.focus();
elem.scrollLeft = elem.scrollWidth;

您只需将CSS属性设置为“rtl”(从右到左),不需要JS。 这将改变滚动方向和文本对齐方式,因此当文本小于输入的大小时可能看起来很奇怪,但是,考虑到输入将始终包含一个长url,这不应该是一个问题

输入{
利润率:10px;
方向:rtl;
}



这是一个非常聪明的想法,但如果用户必须手动编辑URL,它会改变用户的输入行为(其行为类似于文本对齐:右)。使用一些JS更改聚焦和模糊的
dir
属性。这是滥用rtl属性,实际上是告诉浏览器希望从右到左输入(即阿拉伯语或希伯来语等). 即使副作用最初是期望的结果,也很可能导致输入问题。我尝试了
方向:rtl
(与
文本对齐:左
)但在输入值以数字开头时遇到问题;数字就会出现。为了克服这个问题,我将该值包含在
&lrm
&rlm,但这有一个问题,即复制文本时,在复制的文本中会出现问号。此外,箭头/主页/结束键的工作方式相反。最后,这真的是一次黑客攻击,所以我决定使用设置
scrollLeft
。看到你也在岛上生活了几年,这可能是非常酷的复制:)Hasta la vista@巴卢斯克:是的它有它自己的挑战,但总体来说非常好。很好地提供了向上投票,但除此之外,只需获得必要的代表,这样你就可以采取适当的行动,希望我能不止一次地向上投票。多年来一直在寻找这种行为。为什么它是最好的?当然不是。本机方法简单得多,速度也快得多。如果更新是通过编程方式完成的,最好在“设置超时”内完成。唯一不完美的答案是因为post标记不包括jQuery。。。这增加了scrollLeft和scrollWidth都是纯Javascript中的现有功能,因此您间接地回答了正确的问题。在了解scrollLeft和scrollWidth作为输入的目的之前找到了这一点。又是一个好答案!:)这完全改变了键盘导航的行为。。。解决一个问题,创造另一个!我小心地在一个禁用的字段上使用了这个选项,并将其与文本对齐:居中结合使用,它的效果非常好。较短的文本位于左侧,较长的文本自动滚动。
var elem = document.getElementById('myInput');
elem.focus();
elem.scrollLeft = elem.scrollWidth;