Add jQuery field selection plugin.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 15 Jul 2011 14:41:47 +0000 (16:41 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 15 Jul 2011 14:41:47 +0000 (16:41 +0200)
src/main/resources/static/javascript/jquery.fieldselection.js [new file with mode: 0644]
src/main/resources/templates/include/head.html

diff --git a/src/main/resources/static/javascript/jquery.fieldselection.js b/src/main/resources/static/javascript/jquery.fieldselection.js
new file mode 100644 (file)
index 0000000..47f25a9
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * jQuery plugin: fieldSelection - v0.1.0 - 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 { start: 0, end: e.value.length, length: 0 };
+                               }
+
+                       )();
+
+               },
+
+               replaceSelection: function() {
+
+                       var e = this.jquery ? this[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 this;
+                               }
+
+                       )();
+
+               }
+
+       };
+
+       jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });
+
+})();
index b37df26..cd9eddf 100644 (file)
@@ -6,6 +6,7 @@
 
        <script src="javascript/jquery-1.4.2.js" language="javascript"></script>
        <script src="javascript/jquery.url.js" language="javascript"></script>
+       <script src="javascript/jquery.fieldselection.js" language="javascript"></script>
        <script src="javascript/sone.js" language="javascript"></script>
 
        <div id="offline-marker"></div>