85 lines
1.8 KiB
JavaScript
Executable File
85 lines
1.8 KiB
JavaScript
Executable File
/*
|
|
* 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;
|
|
console.log(e);
|
|
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; });
|
|
|
|
})();
|