gpt4 book ai didi

javascript - 如何移动窄输入元素中的可见文本以在末尾看到光标?

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:21 25 4
gpt4 key购买 nike

我遇到的问题是,给定一个输入元素,其最大长度比元素的宽度(在其样式中设置)宽得多,并且给定一个比元素的宽度宽的值,我怎样才能得到要“滚动”到文本末尾的元素。在 IE 中很容易,我创建一个 textRange 对象,将其开始和结束位置放在文本的末尾,在该范围上调用 select,然后 bam,光标放在文本的末尾并且文本被移动所以显示结束。在 Firefox、Chrome、Safari 中,尝试使用输入元素的 setSelectionRange 将光标设置在正确的位置,但文本没有移动,所以我看到它的结尾,而是开头。有谁知道我可以将光标放在文本末尾并移动文本以便我可以看到光标的方法吗?

谢谢!

谢恩


<html>
<head>
<title>input cursor position</title>
<script language='javascript'>
function setCursor()
{
var objInput = document.getElementById( 'testinputbox' );
var nLength = objInput.value.length;

objInput.focus();
objInput.setSelectionRange( nLength, nLength );
}
</script>
</head>
<body onload='setCursor();'>
<input id='testinputbox' maxlength='200' value='some very very very very very long text' style='width: 100px;'></input>
</body>
</html>

最佳答案

我怀疑这是一个很好的跨浏览器解决方案,但它似乎确实可以在 Firefox 中解决。我最初通过模拟右箭头键按下来尝试,但没有任何运气。

function setCursor(id)
{
var elem = document.getElementById(id);

elem.focus();
elem.setSelectionRange(elem.value.length, elem.value.length);

// Trigger a "space" keypress.
var evt = document.createEvent("KeyboardEvent");
evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32);
elem.dispatchEvent(evt);

// Trigger a "backspace" keypress.
evt = document.createEvent("KeyboardEvent");
evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0);
elem.dispatchEvent(evt);
}

有关 initKeyEvent 的更多信息 here .

关于javascript - 如何移动窄输入元素中的可见文本以在末尾看到光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/668720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com