我有一个文本区域,该区域在页面加载时具有默认文本“列表”。重点突出的是,该文本已删除并替换为“-”。我希望插入符号的位置在“-”之后,这在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/