Probleem met drukken op button met text naar form
JeroenI - 11/11/2010 23:30 (laatste wijziging 11/11/2010 23:32)
PHP interesse
Goedenavond,
Ik heb een probleem. Ik probeer d.m.v. een button tekst in een textarea te krijgen. Om te expirimenteren heb ik het simpelste gebruikt maar ik wil uiteindelijk dat je bijvoorbeeld [.bold][./bold] (zonder puntjes dan he) hebt en dat de focus tussen die 2 komt. Maargoed om uberhaupt tekst via die button te krijgen wilde ik bij a beginnen, maar dat pakt hij niet. Ik gebruik de volgende codes:
in head:
<script type="text/javascript">
function add(veld,text1)
{
document.indexform.elements[veld].value += " "+text1+" ";
document.indexform.elements[veld].focus();
}
</script>
< script type= "text/javascript" >
function add( veld, text1)
{
document.indexform .elements [ veld] .value += " " + text1+ " " ;
document.indexform .elements [ veld] .focus ( ) ;
}
</ script>
Als button:
<input type="button" name="bold" value="Dik" class="textfieldcolor" src="javascript:add(\'tekst\',\':)\')">
<input type = "button" name = "bold" value = "Dik" class = "textfieldcolor" src = "javascript:add(\'tekst\',\':)\')" >
Nu vraag ik me af, wat doe ik fout? want ik kom er niet uit...
Bij voorbaat dank!
[edit]
Het form heet indexform, naam is toegewezen en de textarea heet tekst.
8 antwoorden
Gesponsorde links
Sam - 11/11/2010 23:35 (laatste wijziging 11/11/2010 23:53)
PHP expert
src in je input moet je vervangen door onClick:
<input type="button" name="bold" value="Dik" class="textfieldcolor" onClick="add('tekst',':)')">
<input type = "button" name = "bold" value = "Dik" class = "textfieldcolor" onClick = "add('tekst',':)')" >
(Backslashes zijn niet nodig, je gebruikt single quotes binnen double quotes, "javascript:" is ook niet nodig)
Bedankt door: JeroenI
Kevin - 11/11/2010 23:53
Crew Ajax/REST
Nou als je je input veld een ID zou geven dan kan je simpelweg dit gebruiken:
function add(veld,text1) {
var tmp = document.getElementById(veld);
tmp.value = tmp.value +" "+text1+" ";
tmp.focus();
}
function add( veld, text1) {
var tmp = document.getElementById ( veld) ;
tmp.value = tmp.value + " " + text1+ " " ;
tmp.focus ( ) ;
}
Bedankt door: JeroenI
JeroenI - 12/11/2010 00:03
PHP interesse
en hoe zou ik hem dan kunnen focussen tussen a en b? (stel dat ik bij drukken a en b krijg)
Sam - 12/11/2010 00:19
PHP expert
Een beetje googlen leverde mij deze code op:
function setSelectionRange(input, selectionStart, selectionEnd) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
function setCaretToPos (input, pos) {
setSelectionRange(input, pos, pos);
}
function setSelectionRange( input, selectionStart, selectionEnd) {
if ( input.setSelectionRange ) {
input.focus ( ) ;
input.setSelectionRange ( selectionStart, selectionEnd) ;
}
else if ( input.createTextRange ) {
var range = input.createTextRange ( ) ;
range.collapse ( true ) ;
range.moveEnd ( 'character' , selectionEnd) ;
range.moveStart ( 'character' , selectionStart) ;
range.select ( ) ;
}
}
function setCaretToPos ( input, pos) {
setSelectionRange( input, pos, pos) ;
}
input is de ID van je textarea, dus moet je die een ID geven, pos is de positie waar je je cursor wilt hebben. Er bestaan manieren een de cursor na een bepaald woord te zetten, maar daarvoor verwijs ik je graag door naar onze goede vriend Google
JeroenI - 12/11/2010 08:22
PHP interesse
waar google je dan zoal op, want ik zou mijngod niet weten waar ik op zou moeten googlen.
Kevin - 13/11/2010 16:44
Crew Ajax/REST
Nou om zoiets te bekomen als resultaat in zijn geheel zou ik de hele boel met Regular Expressions schrijven.
Enkel is dit niet een gemakkelijk iets.
Als je het zo zou doen, check dan best even deze uitleg http://www.w3sc...regexp.asp
JeroenI - 14/11/2010 10:26 (laatste wijziging 14/11/2010 10:26)
PHP interesse
Ik heb inmiddels een code gevonden met 99% succes. Onderstaande code gebruik ik:
<script type="text/javascript">
function tag(veld, tag1, tag2)
{
if (!tag2)
{
tag2 = tag1;
}
if (document.selection)
{
veld.focus();
var selection = document.selection.createRange();
if(selection.text)
{
selection.text = "["+tag1+"]"+selection.text+"[/"+tag2+"]";
}
else
{
veld.value += "["+tag1+"] [/"+tag2+"]";
}
}
else if (veld.selectionStart || veld.selectionStart == '0')
{
var startPos = veld.selectionStart;
var endPos = veld.selectionEnd;
if (startPos != endPos)
{
veld.value = veld.value.substring(0, startPos)
+ "["+tag1+"]"
+ veld.value.substring(startPos, endPos)
+ "[/"+tag2+"]"
+ veld.value.substring(endPos, veld.value.length);
}
else
{
veld.value = veld.value.substring(0, startPos)
+ "["+tag1+"] [/"+tag2+"]"
+ veld.value.substring(endPos, veld.value.length);
}
}
}
</script>
< script type= "text/javascript" >
function tag( veld, tag1, tag2)
{
if ( ! tag2)
{
tag2 = tag1;
}
if ( document.selection )
{
veld.focus ( ) ;
var selection = document.selection .createRange ( ) ;
if ( selection.text )
{
selection.text = "[" + tag1+ "]" + selection.text + "[/" + tag2+ "]" ;
}
else
{
veld.value += "[" + tag1+ "] [/" + tag2+ "]" ;
}
}
else if ( veld.selectionStart || veld.selectionStart == '0' )
{
var startPos = veld.selectionStart ;
var endPos = veld.selectionEnd ;
if ( startPos != endPos)
{
veld.value = veld.value .substring ( 0 , startPos)
+ "[" + tag1+ "]"
+ veld.value .substring ( startPos, endPos)
+ "[/" + tag2+ "]"
+ veld.value .substring ( endPos, veld.value .length ) ;
}
else
{
veld.value = veld.value .substring ( 0 , startPos)
+ "[" + tag1+ "] [/" + tag2+ "]"
+ veld.value .substring ( endPos, veld.value .length ) ;
}
}
}
</ script>
Maar hoe krijg ik nu de focus tussen tag1 en tag2 na het drukken erop ?
Gesponsorde links
Dit onderwerp is gesloten .