Home » , » Tab & Untab

Tab & Untab

Fungsi ini memungkinkan Anda untuk melakukan perintah indentasi atau outdentasi pada lebih dari satu baris teks sekaligus di dalam elemen <textarea>:

(function() {

var tabCharacter = ' '; // Use `\t` or multiple space character

var select = function(start, end, target) {
target.focus();
target.setSelectionRange(start, end);
};

window._tab = function(target) {

var start = target.selectionStart,
end = target.selectionEnd,
value = target.value,
selections = value.substring(start, end).split('\n');

for (var i = 0, len = selections.length; i < len; ++i) {
selections[i] = tabCharacter + selections[i];
}

target.value = value.substring(0, start) + selections.join('\n') + value.substring(end);

// re-select text after tabbing
var selectEnd = (end + (tabCharacter.length * selections.length));
if (start == end) {
select(selectEnd, selectEnd, target);
} else {
select(start, selectEnd, target);
}

};

window._untab = function(target) {

var start = target.selectionStart,
end = target.selectionEnd,
value = target.value,
pattern = new RegExp("^" + tabCharacter),
edits = 0;

if (start == end) { // single line

while (start > 0) {
if(value.charAt(start) == '\n') {
start++;
break;
}
start--;
}

var portion = value.substring(start, end),
matches = portion.match(pattern);

if (matches) {
target.value = value.substring(0, start) + portion.replace(pattern, "") + value.substring(end);
end--;
}

// set caret position after tabbing
var selectEnd = end <= start ? end : end - tabCharacter.length + 1;
select(selectEnd, selectEnd, target);

} else { // multiline

var selections = value.substring(start, end).split('\n');

for (var i = 0, len = selections.length; i < len; ++i) {
if (selections[i].match(pattern)) {
edits++;
selections[i] = selections[i].replace(pattern, "");
}
}

target.value = value.substring(0, start) + selections.join('\n') + value.substring(end);

// re-select text after tabbing
select(start, (edits > 0 ? end - (tabCharacter.length * edits) : end), target);

}

};

})();

Penggunaan

Dengan tombol:

<button onclick="_tab(document.getElementById('ID-TEXTAREA'));">Tab</button>
<button onclick="_untab(document.getElementById('ID-TEXTAREA'));">Untab</button>

Dengan tombol Tab dan Shift + Tab pada papan kunci:

document.getElementById('ID-TEXTAREA').onkeydown = function(e) {
// Shift + Tab ditekan
if (e.shiftKey && e.keyCode == 9) {
_untab(this);
return false;
}
// Tab ditekan
if (e.keyCode == 9) {
_tab(this);
return false;
}
};

Terkait: Daftar Snippet untuk Implementasi DOM Range API

Jika Anda menyukai Artikel di blog ini, Silahkan klik disini untuk berlangganan gratis via email, dengan begitu Anda akan mendapat kiriman artikel setiap ada artikel yang terbit di Creating Website

0 comments:

Post a Comment

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2011. Homtimpa - All Rights Reserved
Template Modify by Creating Website
Proudly powered by Blogger