Wednesday, January 23, 2013

JavaScript Seleksi Teks Otomatis

Auto Selection Text with JavaScript

Membuat fitur seleksi teks otomatis pada elemen-elemen formulir seperti <textarea> atau <input> memang mudah, tetapi membuat fitur seleksi otomatis pada elemen-elemen non formulir seperti <div> dan <pre> membutuhkan sedikit langkah tambahan. Berikut ini adalah fungsinya:

function autoSelect(elem) {
    var selection, range;
    if (window.getSelection) {
        selection = window.getSelection();
        range = document.createRange();
        range.selectNodeContents(elem);
        selection.removeAllRanges();
        selection.addRange(range);
    } else if (document.selection) { // IE
        selection = document.selection.createRange().text;
        range = document.body.createTextRange();
        range.moveToElementText(elem);
        range.select();
    }
}

Posting ini juga sekaligus akan Saya jadikan sebagai dokumentasi tambahan untuk memperbaharui posting Saya yang lama mengenai cara membuat fitur seleksi teks otomatis pada tag <pre> di sini. Sejak rilis jQuery 1.9, sepertinya jQuery.browser sudah ditiadakan, jadi posting tersebut sudah tidak berlaku lagi.

Potongan kode di atas lebih baik, dan bisa diaktifkan oleh pengguna mentah maupun pengguna JavaScript Library seperti .

Contoh Penggunaan

Parameter elem akan kita gunakan sebagai referensi menuju elemen yang ingin kita seleksi. Misalnya, kita ingin menyeleksi semua teks di dalam elemen yang memiliki ID foo:

autoSelect(document.getElementById('foo'));

Kode di atas merupakan contoh penerapan JavaScript mentah. Untuk menerapkannya pada jQuery, kita cukup mengganti pola selektornya saja:

autoSelect($('#foo')[0]);

Demo JavaScript Demo jQuery

Contoh Lain: Membuat Fitur Seleksi Otomatis pada Tag PRE

Versi JavaScript Mentah

var pre = document.getElementsByTagName('pre');
for (var i = 0, len = pre.length; i < len; i++) {
    pre[i].onclick = function() {
        autoSelect(this);
    };
}

Lihat Demo

Versi jQuery

$('pre').on("click", function() {
    autoSelect(this);
});

Lihat Demo


Gambar: Google

Labels: , , ,

13 Comments:

At Wednesday, January 23, 2013 at 7:10:00 PM GMT+7, Blogger Beben Koben said...

gile nih, script terus artikelnya... =p*

 
At Wednesday, January 23, 2013 at 8:25:00 PM GMT+7, Blogger Unknown said...

Javascript yang sangat menarik..
apalagi untuk blog yang banyak kumpulan kodenya...

 
At Thursday, January 24, 2013 at 10:20:00 AM GMT+7, Blogger Putra said...

lha kalo doble-click baru ke seleksi, javascriptnya gmn? =D

 
At Thursday, January 24, 2013 at 10:49:00 AM GMT+7, Blogger Taufik Nurrohman said...

pre[i].ondblclick = function() {
autoSelect(this);
};

$('pre').on("dblclick", function() {
autoSelect(this);
});

 
At Thursday, January 24, 2013 at 1:25:00 PM GMT+7, Blogger Unknown said...

\o/

 
At Thursday, January 24, 2013 at 7:07:00 PM GMT+7, Anonymous Anonymous said...

tutorial bagus teman.

 
At Thursday, February 14, 2013 at 4:16:00 PM GMT+7, Blogger Unknown said...

kalau ingin menerepkan tutorial diatas di element </blockquote>, gimana caranya??? :)

 
At Saturday, February 16, 2013 at 7:00:00 AM GMT+7, Blogger Taufik Nurrohman said...

var bq = document.getElementsByTagName('blockquote');
for (var i = 0, len = bq.length; i < len; i++) {
bq[i].onclick = function() {
autoSelect(this);
};
}


atau

$(document).ready(function() {
$('blockquote').on("click", function() {
autoSelect(this);
});
});

 
At Friday, July 19, 2013 at 6:14:00 PM GMT+7, Blogger Larry bring said...

code yang ini pilih salah satu ato sisipin dua duanya om?

 
At Saturday, October 19, 2013 at 5:38:00 PM GMT+7, Blogger Unknown said...

mau ditaruh dmna itu om ?? maaf pemula..

 
At Sunday, March 16, 2014 at 10:46:00 AM GMT+7, Blogger Admin said...

tapi tetap saja pada area komentar tidak bekerja, ada penambahan seperti apa biar area komentar bekerja mas taufik??
function autoSelect(elem) {
var selection, range;
if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(elem);
selection.removeAllRanges();
selection.addRange(range);
} else if (document.selection) { // IE
selection = document.selection.createRange().text;
range = document.body.createTextRange();
range.moveToElementText(elem);
range.select();
}
}

// Eksekusi di sini
var pre = document.getElementsByTagName('pre');
for (var i = 0, len = pre.length; i < len; i++) {
pre[i].ondblclick = function() {
autoSelect(this);
};
}

 
At Wednesday, March 19, 2014 at 11:58:00 AM GMT+7, Blogger Kang Mousir said...

coba pindahkan posisi js nya berada diatas tag body.

 
At Sunday, April 5, 2015 at 7:23:00 AM GMT+7, Anonymous Anonymous said...

Nah kalau untuk fungsi autoselect versi JQuerynya gimana min ? Saya pengen semua full JQuery hehehe.. atau mungkin bisa dibuatkan artikel tentang konversi javascript murni ke JQuery :D 0:)

 

Post a Comment

<< Home