代码之家  ›  专栏  ›  技术社区  ›  Mateusz Dymczyk

光标移动到文本字段的开头

  •  6
  • Mateusz Dymczyk  · 技术社区  · 15 年前

    我对IE8有一定的问题(并且只有IE),当我聚焦一个包含文本的输入字段时,光标移动到该字段的开头。我想把光标放在末尾。我到处搜索,找到了以下解决方案:

    function setSelectionRange(input, selectionStart, selectionEnd) {
        input = document.getElementsByTagName("input")[0];
        if (input.createTextRange) {
            var range = input.createTextRange();
            range.collapse(true);
            range.moveEnd('character', selectionEnd);
            range.moveStart('character', selectionStart);
            range.select();
        }
    }
    

    这里的“input”只是一个类中的输入字段( var inputElement = this.input; )问题是“setSelectionRange”和“createTextRange”。我做错什么了吗?CreateTextRange是否仅为TextArea定义?

    @编辑:在将输入更改为document.getElementsByTagname(“input”)[0];我可以转到“createTextRange”分支,但它仍然不更改光标的位置,所以我似乎使用了类似“两个对象”的JS输入和jQuery输入。

    @edit2:我对代码做了一些修改,现在我从文档中获取输入,它进入if分支。但是浏览器显示:

    Unexpected call to method or property access.
    

    在这条线上 var range = input.createTextRange();

    @伊迪丝3:回答詹姆斯的问题。我有一个类,在这个类中,整个东西与一个有输入的JSP相关联。在这个类中,我为与JSP输入表单关联的字段设置了一个焦点处理程序。 inputElement.focus(onInputFocus) 然后我有这样的东西:

    function onInputFocus() {
        isFocused = true;
        valueDivElement.hide();
        labelElement.html(labelFocus);
        if (currentData.selectedEntityCode) {
            inputElement.val(currentData.selectedEntityCode);
            inputElement.attr('title', currentData.selectedEntityCode);
        } else {
    
        }
    
        var input = document.getElementsByTagName("input")[0];
        input.value = input.value;
    }
    

    整个类显然要大得多,这不是我的代码,但我猜这是最后一件要执行的事情。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Mutation Person    15 年前

    input.value = input.value; //assumes input is a DOM element.
    

    http://jsfiddle.net/7vdv6/

    isFocused = true;
    valueDivElement.hide();
    labelElement.html(labelFocus);
    if (currentData.selectedEntityCode) {
        inputElement.val(currentData.selectedEntityCode);
        inputElement.attr('title', currentData.selectedEntityCode);
    } else {
    
    }
    

    var input = document.getElementsByTagName("input")[0];
    input.focus();
    input.value = input.value;
    

    document.getElementsByTagName("input")[0] $("input:first")