使用javascript打字时如何避免光标向后移动

时间:2013-03-07 12:44:59

标签: javascript

在文本框中输入值时,当我在输入的值之间输入值时,光标会自动移动到值的末尾。

<!DOCTYPE html>
<html>
    <body>
        <script>
        function truncate(x) {
            if(x.value.length > 0) 
            {               
                x.value = x.value.replace(/^\s+/, '');
            }
        }
        </script>

        <input id="otherText" onkeyup="javascript:truncate(this);" maxlength="12" type="text"/>

    </body>
</html>

2 个答案:

答案 0 :(得分:0)

<!DOCTYPE html>
<html>
<body>



<script>
function truncate(x){
var val = document.getElementById("otherText");

var inputTextValue = val.value;
if(inputTextValue.length>0) 
    { 

    val.value = '';

}
}
</script>
<input id="otherText" onkeyup="javascript:truncate(this);"   maxlength="12" type="text"/> </body>
</html>

请注意我不知道如何用特定的正则表达式替换字符串。但上面的代码只是替换为空字符串。您可以根据自己的要求进行修改。

答案 1 :(得分:0)

试试这个

http://jsfiddle.net/DDQSU/2/

$(function() {

    function setCaretPosition(elemId, caretPos) {
        var elem = elemId
        if(elem != null) {
        if(elem.createTextRange) {
           var range = elem.createTextRange();
           range.move('character', caretPos);
           range.select();
        }
        else {
           if(elem.selectionStart) {
              elem.focus();
              elem.setSelectionRange(caretPos, caretPos);
           }
           else
              elem.focus();
        }
    }
}

$("#otherText").on("keyup", function(event){
                            var x = this,sel=x.selectionStart;
                            if(x.value.length > 0) 
                            {               
                                x.value = x.value.replace(/^\s+/g, '');
                            }
                            setCaretPosition(x,sel);
                        })
                 })

解决方案已经在那里了 Set keyboard caret position in html textbox

此问题与Javascript, avoid cursor moving at textbox end

重复