Updated jquery selection lib
This commit is contained in:
+18
-20
@@ -23,18 +23,7 @@
|
||||
* @see $.fn.setSelection
|
||||
*/
|
||||
$.fn.setCaret = function(index) {
|
||||
var range, elem;
|
||||
elem = this.get(0);
|
||||
|
||||
if ($.browser.opera) {
|
||||
match = this.val().match(/\n/g);
|
||||
if (match) {
|
||||
newlines = match.length;
|
||||
index += newlines;
|
||||
}
|
||||
}
|
||||
|
||||
this.setSelection(index);
|
||||
this.setSelection(index, index);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -43,7 +32,7 @@
|
||||
* @return int
|
||||
*/
|
||||
$.fn.getCaret = function() {
|
||||
var elem, range, elemRange, elemRangeCopy, value, caret, pos;
|
||||
var elem, range, elemRange, elemRangeCopy, value, caret, pos, match;
|
||||
elem = this.get(0);
|
||||
|
||||
value = $(elem).val();
|
||||
@@ -86,11 +75,9 @@
|
||||
}
|
||||
|
||||
if ($.browser.opera) {
|
||||
value = value.replace(/\r?\n/g, "\r\n").substr(0, caret);
|
||||
match = value.match(/\r\n/g);
|
||||
match = value.replace(/\r?\n/g, "\r\n").substr(0, caret).match(/\r\n/g);
|
||||
if (match) {
|
||||
newlines = match.length;
|
||||
caret -= newlines;
|
||||
caret -= match.length;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,13 +92,24 @@
|
||||
* @return object chainable
|
||||
*/
|
||||
$.fn.setSelection = function(start, end) {
|
||||
var elem, range;
|
||||
var elem, range, match;
|
||||
elem = this.get(0);
|
||||
end = end || start;
|
||||
|
||||
// standard browsers
|
||||
if (elem.setSelectionRange) {
|
||||
elem.focus();
|
||||
|
||||
if ($.browser.opera) {
|
||||
match = this.val().replace(/\r?\n/g, "\n").substr(0, start).match(/\n/g);
|
||||
if (match) {
|
||||
start += match.length;
|
||||
}
|
||||
match = this.val().replace(/\r?\n/g, "\n").substr(0, end).match(/\n/g);
|
||||
if (match) {
|
||||
end += match.length;
|
||||
}
|
||||
}
|
||||
elem.setSelectionRange(start, end);
|
||||
} else if (elem.createTextRange) {
|
||||
// old IE handling
|
||||
@@ -137,7 +135,7 @@
|
||||
|
||||
// standard browsers
|
||||
if (elem.selectionStart) {
|
||||
return elem.value.substr(elem.selectionStart, elem.selectionEnd);
|
||||
return elem.value.substring(elem.selectionStart, elem.selectionEnd);
|
||||
}
|
||||
|
||||
// old IE
|
||||
@@ -160,7 +158,7 @@
|
||||
|
||||
// standard browsers
|
||||
if (elem.selectionStart) {
|
||||
elem.value = elem.value.substr(0, elem.selectionStart) + text + elem.value.substr(elem.selectionEnd, elem.value.length);
|
||||
elem.value = elem.value.substr(0, elem.selectionStart) + text + elem.value.substr(elem.selectionEnd);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user