Dodanie biblioteki jquery.fieldselection.js do wyciągania i zmieniania tekstu zaznacz...
[redakcja.git] / project / static / js / jquery.fieldselection.js
diff --git a/project/static/js/jquery.fieldselection.js b/project/static/js/jquery.fieldselection.js
new file mode 100644 (file)
index 0000000..448f9dc
--- /dev/null
@@ -0,0 +1,65 @@
+(function() { 
+    jQuery.fn.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) };
+            }) ||
+            
+            // Internet Explorer
+            (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; }
+        )();
+    },
+        
+    jQuery.fn.replaceSelection = function() {
+        var e = this.jquery ? this[0] : this;
+        var text = arguments[0] || '';
+        var scrollTop = $(this).scrollTop();
+                
+        return (
+            // Mozilla / dom 3.0
+            ('selectionStart' in e && function() {
+                var selectionStart = e.selectionStart;
+                console.log(e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length));
+                e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
+                $(e).scrollTop(scrollTop).focus();
+                e.selectionStart = selectionStart + text.length;
+                e.selectionEnd = selectionStart + text.length;
+                return this;
+            }) ||
+
+            // Internet Explorer
+            (document.selection && function() {
+                e.focus();
+                document.selection.createRange().text = text;
+                return this;
+            }) ||
+
+            // browser not supported
+            function() {
+                e.value += text;
+                return jQuery(e);
+            }
+        )();
+    }
+})();
\ No newline at end of file