抓取、設定文字游標位置
寫了一個自動 replace 非數字的功能,在Crhome中會發生 replace 完文字游標自動跑到最後面。
除了避免 event.which = 8,37,39,46 之外,用滑鼠指向某個位置,輸入完文字後,游標仍會至底。
//取得文字游標位置
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
//跳位置 or 選範圍文字
$.fn.selectRange = function(start, end) {
if(!end) end = start;
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
除了避免 event.which = 8,37,39,46 之外,用滑鼠指向某個位置,輸入完文字後,游標仍會至底。
//取得文字游標位置
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
//跳位置 or 選範圍文字
$.fn.selectRange = function(start, end) {
if(!end) end = start;
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
抓取、設定文字游標位置
Reviewed by Wild
on
10/16/2013 10:19:00 上午
Rating:
沒有留言:
沒有Google帳號也可發表意見唷!