public
Description: a jQuery plugin to get and set the caret/selection
Homepage: http://labs.0xab.cd/jquery/fieldselection/0.2.3-test/
Clone URL: git://github.com/localhost/jquery-fieldselection.git
jquery-fieldselection / jquery-fieldselection.js
100644 82 lines (56 sloc) 1.775 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
* jQuery plugin: fieldSelection - v0.1.1 - last change: 2006-12-16
* (c) 2006 Alex Brem <alex@0xab.cd> - http://blog.0xab.cd
*/
 
(function() {
 
var fieldSelection = {
 
getSelection: function() {
 
var e = (this.jquery) ? this[0] : this;
 
return (
 
/* mozilla / dom 3.0 */
('selectionStart' in e && function() {
var l = e.selectionEnd - e.selectionStart;
return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
}) ||
 
/* exploder */
(document.selection && function() {
 
e.focus();
 
var r = document.selection.createRange();
if (r === null) {
return { start: 0, end: e.value.length, length: 0 }
}
 
var re = e.createTextRange();
var rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
 
return { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };
}) ||
 
/* browser not supported */
function() { return null; }
 
)();
 
},
 
replaceSelection: function() {
 
var e = (typeof this.id == 'function') ? this.get(0) : this;
var text = arguments[0] || '';
 
return (
 
/* mozilla / dom 3.0 */
('selectionStart' in e && function() {
e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
return this;
}) ||
 
/* exploder */
(document.selection && function() {
e.focus();
document.selection.createRange().text = text;
return this;
}) ||
 
/* browser not supported */
function() {
e.value += text;
return jQuery(e);
}
 
)();
 
}
 
};
 
jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });
 
})();