Voortbordurend op Crisp z'n script (die het 'zware' werk doet):
Ipv een span, maakt deze gebruik van het selectie object.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| <html>
<head>
<title>highlight</title>
<script type="text/javascript">
function highlight() {
var sel=window.getSelection();
sel.removeAllRanges();
var t = document.getElementById('highlight').value;
if (t == '') return;
t = t.replace(/([\\|^$()[\]{}.*+?])/g, '\\$1');
var r, p = document.getElementById('case').checked? 'g':'gi';
if (document.getElementById('literal').checked) {
r = new RegExp(t, p);
} else {
if (/^\s*$/.test(t)) return;
r = new RegExp(t.split(/\s+/).join('|'), p);
}
var s = [document.documentElement||document.body], i = 0, e, j, l, o, k;
do {
e = s[i];
if (e.nodeType == 3) {
r.lastIndex = 0;
l = r.exec(e.nodeValue);
if (l != null) {
k = l[0].length;
if (r.lastIndex > k) {
e.splitText(r.lastIndex-k);
e = e.nextSibling;
}
if (e.nodeValue.length > k) {
e.splitText(k);
s[i++] = e.nextSibling;
}
range=document.createRange();
range.selectNode(e);
sel.addRange(range);
}
} else {
j = e.childNodes.length;
while (j) s[i++] = e.childNodes.item(--j);
}
} while(i--);
}
</script>
<style>
::-moz-selection{
background-color:yellow;
}
</style>
</head>
<body>
Wat ik eigenlijk zoek is als je een woord in een tekstbox intypt dat
deze dan alles wat op erop lijkt (een deel of het hele woord bv)
oplicht zonder de pagina te herladen.<br />
In php heb ik er al veel hierover gevonden op dit forum, en ook op
verschillende website's (dynamic drive,hotscripts etc..) vond ik wel
wat er op leek maar het moet namelijk in asp gedaan worden en dan
leek javascript het handigst.<br />
Maar de meeste voor asp waren woord voor woord zoeken in plaats van
alle woorden tegelijk met een kleur te "highlighten".<br /><br />
<input type="text" id="highlight" value="zoek" />
<input type="checkbox" id="literal" /> letterlijk
<input type="checkbox" id="case" /> case-sensitive
<input type="button" value="highlight" onclick="highlight()" /><br />
Druk op F5 om highlighting te verwijderen
</body>
</html> |
Deze werkt alleen in Mozilla, dus je zal er waarschijnlijk niet veel aan hebben.
Geen idee hoe dit in IE zou moeten.