JQuery Find and Highlight Text
HTML, CSS & jQuery
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
<title>jQuery Find and Highlight Text</title>
<style>
body {
background-color:white;
padding:40px 10px 10px;
font:normal normal 13px/1.4 Arial,Sans-Serif;
color:black;
}
.text-finder {
position:fixed;
top:0;
right:0;
left:0;
z-index:999;
background-color:white;
border-bottom:1px solid gray;
padding:5px 6px;
box-shadow:0 1px 2px rgba(0,0,0,.4);
}
.highlight {
background-color:yellow; /* highlight color */
font-weight:bold;
}
</style>
<script src="//code.jquery.com/jquery-2.0.2.js"></script>
<script>
/*!
highlight v4
Highlights arbitrary terms.
<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
MIT license.
Johann Burkard
<http://johannburkard.de>
<mailto:jb@eaio.com>
*/
(function($) {
$.fn.highlight = function(pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat && pat.length ? this.each(function() {
innerHighlight(this, pat.toUpperCase());
}) : this;
};
$.fn.removeHighlight = function() {
return this.find("span.highlight").each(function() {
this.parentNode.firstChild.nodeName;
with (this.parentNode) {
replaceChild(this.firstChild, this);
normalize();
}
}).end();
};
})(jQuery);
// Text finder form function
(function($) {
$(document).ready(function() {
var $finder = $('#text-finder'),
$field = $finder.children().first(),
$clear = $field.next(),
$area = $(document.body),
$viewport = $('html, body');
$field.on("keyup", function() {
$area.removeHighlight().highlight(this.value); // Highlight text inside `$area` on keyup
$viewport.scrollTop($area.find('span.highlight').first().offset().top - 50); // Jump the viewport to the first highlighted term
});
$clear.on("click", function() {
$area.removeHighlight(); // Remove all highlight inside `$area`
$field.val('').trigger("focus"); // Clear the search field
$viewport.scrollTop(0); // Jump the viewport to the top
return false;
});
});
})(jQuery);
</script>
</head>
<body>
<form id="text-finder" class="text-finder" action="javascript:;">
<input type="text" placeholder="Find...">
<input type="reset" value="×">
</form>
Content goes here...
</body>
</html>
Labels: Blogger, JavaScript, jQuery, Potongan
21 Comments:
ini seperti ctrl + f di blogger ya mas??
terus yang aku mau tanyain,semisal, text-finder yang berada di atas,itu dihide dulu
terus baru dimunculkan bisa mas??
By
Unknown, at Sunday, August 4, 2013 at 10:24:00 AM GMT+7
Ini fungsinya buat apa mas ? :D
By
Anonymous, at Sunday, August 4, 2013 at 8:26:00 PM GMT+7
minta penjelasan dong mas,, masih pemula nieh saya :D
Terima kasih mas,, 0:)
By
Ardy, at Monday, August 5, 2013 at 9:40:00 AM GMT+7
oiya mas, dipasangnya dimana yaa?? :D
By
Ardy, at Monday, August 5, 2013 at 9:46:00 AM GMT+7
Keren sekali mas text-finder nya,...
semisal saya ingin menerapkannya diatas postingan gimana tu mas...???
By
M. Alex Joenaedi, at Monday, August 5, 2013 at 10:20:00 AM GMT+7
simpan aja kode itu di atas <div class="post-body entry-content"
By
budkalon, at Monday, August 5, 2013 at 10:21:00 AM GMT+7
Jadinya seperti ini:
<style>
body {
background-color:white;
padding:40px 10px 10px;
font:normal normal 13px/1.4 Arial,Sans-Serif;
color:black;
}
.text-finder {
position:fixed;
top:0;
right:0;
left:0;
z-index:999;
background-color:white;
border-bottom:1px solid gray;
padding:5px 6px;
box-shadow:0 1px 2px rgba(0,0,0,.4);
}
.highlight {
background-color:yellow; /* highlight color */
font-weight:bold;
}
</style>
<script src="http://code.jquery.com/jquery-2.0.2.js"></script>
<script>
/*!
highlight v4
Highlights arbitrary terms.
<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
MIT license.
Johann Burkard
<http://johannburkard.de>
<mailto:jb@eaio.com>
*/
//<![CDATA[
(function($) {
jQuery.fn.highlight = function(pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat && pat.length ? this.each(function() {
innerHighlight(this, pat.toUpperCase());
}) : this;
};
jQuery.fn.removeHighlight = function() {
return this.find("span.highlight").each(function() {
this.parentNode.firstChild.nodeName;
with (this.parentNode) {
replaceChild(this.firstChild, this);
normalize();
}
}).end();
};
})(jQuery);
// Text finder form function
$(document).ready(function() {
var $finder = $('#text-finder'),
$field = $finder.children().first(),
$clear = $field.next(),
$area = $(document.body),
$viewport = $('html, body');
$field.on("keyup", function() {
$area.removeHighlight().highlight(this.value); // Highlight text inside `$area` on key up
$viewport.scrollTop($area.find('span.highlight').first().offset().top - 50); // Jump the viewport to the first highlighted term
});
$clear.on("click", function() {
$area.removeHighlight(); // Remove all highlight inside `$area`
$field.val('').trigger("focus"); // Clear the search field
$viewport.scrollTop(0); // Jump the viewport to the top
return false;
});
});
//]]>
</script>
<form id="text-finder" class="text-finder" action="javascript:;">
<input type="text" placeholder="Find...">
<input type="reset" value="×">
</form>
<div class="post-body entry-content" id="xxx">
By
budkalon, at Monday, August 5, 2013 at 3:27:00 PM GMT+7
Waduh Terimaksih banyak mas Dzulmar Ismail Hijra atas pencerahannya,
saya ijin praktek
By
M. Alex Joenaedi, at Tuesday, August 6, 2013 at 11:56:00 AM GMT+7
ya sama sama mas
By
abang ichal, at Wednesday, August 7, 2013 at 7:56:00 AM GMT+7
mas, kok sya belum dikirimi email dari mas terkait pemesanan template ? ._.
By
Ivan Mantovani S, at Thursday, August 8, 2013 at 1:38:00 PM GMT+7
email saya ivanmantovani7@gmail.com
By
Ivan Mantovani S, at Thursday, August 8, 2013 at 1:39:00 PM GMT+7
MINAL AIDIN WALFAIDZIN MOHON MAAF LAHIR DAN BATIN
SELAMAT HARI RAYA IDUL FITRI
By
Taufik, at Friday, August 9, 2013 at 12:04:00 AM GMT+7
duh.. ane kagak ngerti mas :D
By
Fajrin, at Tuesday, August 27, 2013 at 3:57:00 PM GMT+7
Tampilan demo nya sangat menarik kang, tapi klw js nya sebanyak itu saya rasa hnya akan memperlambat blog....
By
Anonymous, at Friday, September 6, 2013 at 10:30:00 PM GMT+7
srius ngga ngerti gw apa yg dimaksud dgn post diatas :v
By
Unknown, at Monday, October 7, 2013 at 7:29:00 PM GMT+7
yah saya kurang nerti mas :D
- salam damai -
By
no data, at Friday, October 18, 2013 at 10:44:00 PM GMT+7
tak coba dulu mas
By
Imron Fhatoni, at Friday, October 25, 2013 at 10:55:00 AM GMT+7
saya coba integrasikan dengan pencarian
By
you, at Monday, December 2, 2013 at 9:21:00 PM GMT+7
akhirnya sudah bisa...
By
you, at Tuesday, December 3, 2013 at 7:18:00 PM GMT+7
Mas Taufik, kalau find next gimana caranya ya? Nggak cuma dipindah ke hasil pencarian pertama, tetapi dapat digulirkan ke teks selanjutnya yang sama dengan isian formulir? Mohon bantuanya mas saya nggak paham script.
By
Anonymous, at Saturday, April 27, 2019 at 7:54:00 PM GMT+7
Nyimak..
By
Kang Rian, at Wednesday, May 8, 2019 at 5:18:00 AM GMT+7
Post a Comment
<< Home