我有一个文本区域,该区域在页面加载时具有默认文本“列表”。重点突出的是,该文本已删除并替换为“-”。我希望插入符号的位置在“-”之后,这在chrome,opera,FF和safari中有效,但在IE中插入符号最初位于正确的位置,但是稍有停顿后跳到“-”之前。

这是我一直在使用的代码:

    input.onfocus = function(){
        if(this.value == 'List') {
            this.value = '-';
        }
    }


我也尝试过使用onclick事件,在插入“-”后使用this.value = this.value之类的技巧,但是这些都不起作用。如果有人可以为我提供解决方法,我将非常感激。

谢谢!

编辑:
Kierans回答了下面的问题,完美!添加到他的代码中的if语句停止chrome抛出一个小错误:

    input.onclick = function(){
        if(this.value == 'List') {
            this.value = "-";
            if (this.createTextRange) {
                var range = this.createTextRange();
                var caretPos = this.value.length;
                range.move('character', caretPos);
                range.select();
            }
        }
    }

最佳答案

我在Firefox,Chrome和IE中尝试了一个简单的代码段。我在IE中面临相同的问题,因此我们可以使用以下代码片段来设置插入符号的位置:

<input type="text" value="List" onfocus="changeValue(this);"/>
function changeValue(e){
    if(e.value == "List"){
            e.value = "-";
           var range = e.createTextRange();
            var caretPos = e.value.length;
            range.move('character', caretPos);
            range.select();
    }
}


因此,上面的代码工作正常。

供参考,请参见URL:http://jsfiddle.net/J72xB/1/

注意:以上代码已在FireFox6,Chrome,IE9中经过测试。希望这对您有所帮助。 :-)

关于javascript - 更改textarea onclick的值会使插入符号处于奇怪的位置,但仅在IE中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8227813/

10-12 04:04
查看更多