start en sluit tags automatisch toevoegen.
Ik heb een vraagje?
Ik heb een ubb parser en nu wil ik dat ik knoppen boven de texarea heb staan
en dat als ik erop druk dat dan in de textarea het komt te staan op de plaats van de cursor.
Ik heb al op google gezocht maar kan het niet vinden(Verkeerd zoeken).
Ik weet ook niet goed waar je dan op moet zoeken.
Kan iemand mij een beetje op weg helpen.
Alvast bedankt,
Thomas de Vries.
http://parentnode.org/javascript/working-with-the-cursor-position/
Edit: http://pastebin.parentnode.org/79
Kijk daar is!
Edit: http://pastebin.parentnode.org/79
Kijk daar is!
Gewijzigd op 29/05/2011 20:32:09 door Joris van Rijn
De plek van de cursor heet "caret", dan zul je wel genoeg vinden denk ik
Maar loop nu tegen het volgende probleem aan.
Dit is mijn java script code
Code (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
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
<script language="JavaScript">
function insertAtCaret(obj, text) {
if(document.selection) {
obj.focus();
var orig = obj.value.replace(/\r\n/g, "\n");
var range = document.selection.createRange();
if(range.parentElement() != obj) {
return false;
}
range.text = text;
var actual = tmp = obj.value.replace(/\r\n/g, "\n");
for(var diff = 0; diff < orig.length; diff++) {
if(orig.charAt(diff) != actual.charAt(diff)) break;
}
for(var index = 0, start = 0;
tmp.match(text)
&& (tmp = tmp.replace(text, ""))
&& index <= diff;
index = start + text.length
) {
start = actual.indexOf(text, index);
}
} else if(obj.selectionStart) {
var start = obj.selectionStart;
var end = obj.selectionEnd;
obj.value = obj.value.substr(0, start)
+ text
+ obj.value.substr(end, obj.value.length);
}
if(start != null) {
setCaretTo(obj, start + text.length);
} else {
obj.value += text;
}
}
function setCaretTo(obj, pos) {
if(obj.createTextRange) {
var range = obj.createTextRange();
range.move('character', pos);
range.select();
} else if(obj.selectionStart) {
obj.focus();
obj.setSelectionRange(pos, pos);
}
}
</script>
function insertAtCaret(obj, text) {
if(document.selection) {
obj.focus();
var orig = obj.value.replace(/\r\n/g, "\n");
var range = document.selection.createRange();
if(range.parentElement() != obj) {
return false;
}
range.text = text;
var actual = tmp = obj.value.replace(/\r\n/g, "\n");
for(var diff = 0; diff < orig.length; diff++) {
if(orig.charAt(diff) != actual.charAt(diff)) break;
}
for(var index = 0, start = 0;
tmp.match(text)
&& (tmp = tmp.replace(text, ""))
&& index <= diff;
index = start + text.length
) {
start = actual.indexOf(text, index);
}
} else if(obj.selectionStart) {
var start = obj.selectionStart;
var end = obj.selectionEnd;
obj.value = obj.value.substr(0, start)
+ text
+ obj.value.substr(end, obj.value.length);
}
if(start != null) {
setCaretTo(obj, start + text.length);
} else {
obj.value += text;
}
}
function setCaretTo(obj, pos) {
if(obj.createTextRange) {
var range = obj.createTextRange();
range.move('character', pos);
range.select();
} else if(obj.selectionStart) {
obj.focus();
obj.setSelectionRange(pos, pos);
}
}
</script>
Dit is mijn form
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<form method="post" action="">
<input type="button" value="blaat" onclick="insertAtCaret(this.form.text, this.form.value += \'[b][/b]\')">
<textarea name="text" id="tekst" cols="100" rows="20">'.$show['home_tekst'].'</textarea>
<br />
<input type="submit" name="pas_aan" value="Update voorpagina tekst" />
</form>
<input type="button" value="blaat" onclick="insertAtCaret(this.form.text, this.form.value += \'[b][/b]\')">
<textarea name="text" id="tekst" cols="100" rows="20">'.$show['home_tekst'].'</textarea>
<br />
<input type="submit" name="pas_aan" value="Update voorpagina tekst" />
</form>
Zoals te zien is heb ik wat aangepast namelijk deze regel
<input type="button" value="blaat" onclick="insertAtCaret(this.form.text, this.form.value += \'[*b][*/b]\')">
Als ik nu op die knop druk dan komt op de plek van de cursor
dit te staan
undefined[*b][*/b] Zonder die *tjes
Ik wil die undefined weg hebben maar hoe ga ik dat doen.
Heb al veel geprobeerd met de button link.
Maar nog niet met de daadwerkelijke JS code.
Kan iemand mij helpen hiermee.
Alvast bedankt,
Thomas de Vries.
Gewijzigd op 29/05/2011 23:13:51 door thomas de vries