X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/998977e74882d0c12413d7bc08c8475a78afbf18..d125fa3cb06bb8f426b5b54743489f8cff906760:/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 index 00000000..448f9dc0 --- /dev/null +++ b/project/static/js/jquery.fieldselection.js @@ -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