在javascript中,当文本框通过TAB键聚焦时,如何停止在文本框中选择文本并将光标设置为最后一个?

在javascript中,当文本框通过TAB键聚焦时,如何停止在文本框中选择文本并将光标设置为最后一个?,javascript,Javascript,我想停止选择文本框中的文本,并通过TAB键将光标设置为文本框对焦时的最后一个。我该怎么做?请推荐我。我用谷歌搜索了以下代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test Document</title> <scri

我想停止选择文本框中的文本,并通过TAB键将光标设置为文本框对焦时的最后一个。我该怎么做?请推荐我。我用谷歌搜索了以下代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test Document</title>
<script type="text/javascript">
function cursorLast(){
//    var no = document.getElementById('get').length;
    setCaretPosition(document.getElementById('get'),4);

}

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();
    }
}


</script>
</head>

<body>

  <form method="get" id="searchform" action="#" >
    <input type="text" onblur="if (this.value == '') {this.value = 'test';}" onfocus="if (this.value == 'test') {this.value = '';}" value="test" name="s" />
        <br /><br />
    <input type="text" value="test" name="s" id="get" onfocus="cursorLast();"/>
  </form>

</body>
</html>

测试文件
函数cursorLast(){
//var no=document.getElementById('get').length;
setCaretPosition(document.getElementById('get'),4);
}
功能设置CaretPosition(ctrl,pos){
如果(ctrl.setSelectionRange){
ctrl.focus();
控制设置选择范围(位置,位置);
}
else if(ctrl.createTextRange){
var range=ctrl.createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
}


此代码不起作用


提前感谢。

您可以通过捕获第一次输入的按键事件,然后防止默认选项卡行为来实现这一点

<head>
    <script type="text/javascript">
        function KeyDownHandler(event)
        {
            var e = event.which || event.keyCode;
            if (e == 9)
            {
                event.preventDefault();
                setCaretPosition(document.getElementById('get'), 4);
            }
        }

        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();
            }
        }
    </script>
</head>
<body>
    <form>
        <input type="text" value="test" name="s" onkeydown="KeyDownHandler(event);" />
        <br /><br />
        <input type="text" value="test" name="s" id="get" />
    </form>
 </body>

函数KeyDownHandler(事件)
{
var e=event.which | | event.keyCode;
如果(e==9)
{
event.preventDefault();
setCaretPosition(document.getElementById('get'),4);
}
}
功能设置CaretPosition(ctrl,pos)
{
如果(ctrl.setSelectionRange)
{
ctrl.focus();
控制设置选择范围(位置,位置);
}    
else if(ctrl.createTextRange)
{
var range=ctrl.createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
}



另一个棘手的解决方案

<head>
        <script type="text/javascript">
           function setCursorLast(elem){
               var elemId = elem.id;
               var pos = $(elem).attr("value").toString().length;
              setTimeout(function(){setCaretPosition(document.getElementById(elemId), pos)}, 1);
           }


function setCaretPosition(ctrl, pos){
    if (ctrl.setSelectionRange){ // for FF
        ctrl.focus();
        ctrl.setSelectionRange(pos, pos);
    }
    else if (ctrl.createTextRange){ // for IE
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}
    </script>
</head>
<body>
    <form>
        <input type="text" value="test" name="s" />
        <br /><br />
        <input type="text" value="test" name="s" id="get" onfocus="seCursorLast(this)"/>
    </form>
 </body>

函数setCursorLast(元素){
var elemId=elem.id;
var pos=$(elem).attr(“value”).toString()长度;
setTimeout(函数(){setCaretPosition(document.getElementById(elemId),pos)},1);
}
功能设置CaretPosition(ctrl,pos){
如果(ctrl.setSelectionRange){//for FF
ctrl.focus();
控制设置选择范围(位置,位置);
}
如果(ctrl.createTextRange){//for IE
var range=ctrl.createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
}