gpt4 book ai didi

javascript - 如何防止光标/插入符号在输入文本元素内移动?

转载 作者:行者123 更新时间:2023-11-29 18:35:44 25 4
gpt4 key购买 nike

我正在尝试构建一个以类似于 Google 搜索页面、Gmail 和其他几个页面(包括此页面 - 请参阅“提问”页面上的“标签”输入)的方式工作的表单。输入文本后,将出现一个选项列表,用户可以使用向上和向下箭头选择他们想要的选项。

我遇到的问题是,向上箭头将光标/插入符号置于字段的位置 0,向下箭头将其置于末尾。有没有一种简单的方法可以防止它移动到开始/结束,或者我是否需要在我的函数运行之前找到插入符号的位置,然后将它重新定位到那个位置?

这是在输入元素中输入文本时运行的函数的开头 (onkeyup)。

var keycode = checkKeycode (event);   // returns the keycode of the key pressed.
if (keycode == 38) { // up arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId - 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 40) { // down arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != numAvEmps && numAvEmps != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId + 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 27) { // Escape
$("#docDropDown").css("display","none");
}
else if (keycode == 9 || keycode == 13) { //tab or enter
/* Fill form */
}

如果更多代码有用,请告诉我。感谢您的帮助。

最佳答案

您可能希望在之前存储插入符号,然后在完成操作后将其放回原处。

像这样:

HTML 主体:

<input type="text" id="mytextbox" style="border: 1px solid black" />

Javascript:

function getCaretPosition(ctrl)
{
var caretPos = 0;
// IE
if (document.selection)
{
ctrl.focus ();
var sel = document.selection.createRange();
sel.moveStart ('character', -ctrl.value.length);
caretPos = sel.text.length;
}
// Firefox
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
{
caretPos = ctrl.selectionStart;
}

return caretPos;
}

function setCaretPosition(ctrl, pos)
{
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange)
{
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}



$(document).ready(function ()
{

$("#mytextbox").keydown(function (e)
{
// Up
if(e.which == 38)
{
var pos = getCaretPosition(this);

// Do stuff here that changes the value/caret?

setCaretPosition(this, pos);
}
// Down
else if(e.which == 40)
{
var pos = getCaretPosition(this);

// Do stuff here that changes the value/caret?

setCaretPosition(this, pos);
}

});

});

关于javascript - 如何防止光标/插入符号在输入文本元素内移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419426/

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