一个泛型函数,允许您在文本框或文本区域的任何位置插入符号:function setCaretPosition(elemId, caretPos) {
var elem = document.getElementById(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();
}
}}
第一个预期参数是要插入键盘插入符号的元素的ID。如果找不到元素,就不会发生任何事情(很明显)。第二个参数是插入位置指数。0会将键盘插入符放在开头。如果您传递的数字大于元素值中的字符数,它将把键盘插入符号放在末尾。
在IE6和更高版本、Firefox 2、Opera 8、Netscape 9、SeaMonkey和Safari上进行了测试。不幸的是,在Safari上,它不能与OnFocus事件结合使用)。
使用上述函数强制键盘插入符号在收到焦点时跳到页面上所有文本区域的末尾的示例:function addLoadEvent(func) {
if(typeof window.onload != 'function') {
window.onload = func;
}
else {
if(func) {
var oldLoad = window.onload;
window.onload = function() {
if(oldLoad)
oldLoad();
func();
}
}
}}// The setCaretPosition function belongs right here!function setTextAreasOnFocus() {/***
* This function will force the keyboard caret to be positioned
* at the end of all textareas when they receive focus.
*/
var textAreas = document.getElementsByTagName('textarea');
for(var i = 0; i
textAreas[i].onfocus = function() {
setCaretPosition(this.id, this.value.length);
}
}
textAreas = null;}addLoadEvent(setTextAreasOnFocus);