comparison js/jquery.fieldselection.js @ 16:bb68dc3ad56f

Major refactor to provide better TinyMCE support and less configuration options, added new jquery dependency, etc.
author David Eads <eads@chicagotech.org>
date Tue, 03 Mar 2009 16:57:39 -0600
parents
children
comparison
equal deleted inserted replaced
15:7a5f74482ee3 16:bb68dc3ad56f
1 /*
2 * jQuery plugin: fieldSelection - v0.1.0 - last change: 2006-12-16
3 * (c) 2006 Alex Brem <alex@0xab.cd> - http://blog.0xab.cd
4 */
5
6 (function() {
7
8 var fieldSelection = {
9
10 getSelection: function() {
11
12 var e = this.jquery ? this[0] : this;
13
14 return (
15
16 /* mozilla / dom 3.0 */
17 ('selectionStart' in e && function() {
18 var l = e.selectionEnd - e.selectionStart;
19 return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
20 }) ||
21
22 /* exploder */
23 (document.selection && function() {
24
25 e.focus();
26
27 var r = document.selection.createRange();
28 if (r == null) {
29 return { start: 0, end: e.value.length, length: 0 }
30 }
31
32 var re = e.createTextRange();
33 var rc = re.duplicate();
34 re.moveToBookmark(r.getBookmark());
35 rc.setEndPoint('EndToStart', re);
36
37 return { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };
38 }) ||
39
40 /* browser not supported */
41 function() {
42 return { start: 0, end: e.value.length, length: 0 };
43 }
44
45 )();
46
47 },
48
49 replaceSelection: function() {
50
51 var e = this.jquery ? this[0] : this;
52 var text = arguments[0] || '';
53
54 return (
55
56 /* mozilla / dom 3.0 */
57 ('selectionStart' in e && function() {
58 e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
59 return this;
60 }) ||
61
62 /* exploder */
63 (document.selection && function() {
64 e.focus();
65 document.selection.createRange().text = text;
66 return this;
67 }) ||
68
69 /* browser not supported */
70 function() {
71 e.value += text;
72 return this;
73 }
74
75 )();
76
77 }
78
79 };
80
81 jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });
82
83 })();