# Im Input-Feld Cursor setzen



## queicherius (16. April 2009)

Ich möchte, dass der Cursor bei einem Klick auf einen Button x Zeichen im Input-Feld zurück geht

ODER

dass der Cursor an eine bestimmten Stelle im Input-Feld gestellt wird

Also so wie hier im Forum (im Editor) zwischen 

```
[b`]
```
und 

```
[/b`]
```
.

(Backtick nur dazu da, dass der BBCode-Decoder nicht anspringt )


----------



## Sven Mintel (18. April 2009)

Moin,

beim 1. musst du die Methode focus() des Eingabefeldes aufrufen

beim 2. Hilft dir das vielleicht weiter: http://www.tutorials.de/forum/javascript-ajax/187515-text-cursorstelle-im-textfeld-einfuegen.html


----------



## queicherius (18. April 2009)

@1: Das habe ich auch schon probiert allerdings kann man da (so wie ich das verstanden hab) nur in ein Eingabefeld springen und nicht an eine bestimmte Stelle im Eingabefeld 

@2: Ja danke das bringt mich schon mal einen riesen Schritt weiter. 



> Da hilft immer ein Blick in die entsprechenden Skript-Dateien.
> Das wird hier im Board auch verwendet


Hab ich schon gemacht allerdings steht da alles ohne Zeilenumbrüche -> Sehr schwer zu lesen... vllt. mal wenn ich Zeit hab^^

Doch noch eine Frage:
Wie kann man *ohne Button* den Selektierten Text auslesen? Ansonsten springt mein Formular an...  Oder gibt es ne Möglichkeit den Submit zu unterbinden?


----------



## Parantatatam (18. April 2009)

Schau mal hier nach: getSelection()


----------



## queicherius (18. April 2009)

Leider baue ich meinen Editor mit Links als Benutzeroberfläche auf. Deshalb wird wenn man auf einen Link klickt leider die Selection entfernt... :-(
Deshalb die Frage ob man Buttons auch anklicken kann ohne dass das Formular abgeschickt wird.


----------



## Parantatatam (18. April 2009)

Ach so war das gemeint. Ja, dass geht natürlich und zwar gibt es neben den Submit-Buttons auch noch einfache Buttons (<input type="button" />). Dann kannst du per Event-Handler (onclick etc.) mit JavaScript bestimmte Aktionen ausführen.


----------



## queicherius (18. April 2009)

Ahhhhh...

-Brett vor'm Kopf-

DANKE


----------



## Maik (18. April 2009)

queicherius hat gesagt.:


> Deshalb die Frage ob man Buttons auch anklicken kann ohne dass das Formular abgeschickt wird.





einfach nur crack hat gesagt.:


> Ach so war das gemeint. Ja, dass geht natürlich und zwar gibt es neben den Submit-Buttons auch noch einfache Buttons (<input type="button" />). Dann kannst du per Event-Handler (onclick etc.) mit JavaScript bestimmte Aktionen ausführen.





queicherius hat gesagt.:


> Ahhhhh...
> 
> -Brett vor'm Kopf-
> 
> DANKE


Ganz so, wie in dem Beispiel zu cracks empfohlenen Link 

mfg Maik


----------



## queicherius (18. April 2009)

Jetzt hab ich's mal ausprobiert und stehe vor einem Weiteren Problem. 
Wenn ich Text z.B. in der Überschrift markiere und die Funktion dann aufrufe dann wird der markierte Text ausgegeben.
ABER wenn ich Text in der textarea markiere geht's nicht 

Woran liegt das?


----------



## queicherius (19. April 2009)

Ok jetzt geht es und ich hab die Funktion nach meinen Wünschen umgeschrieben. Im FF3 funktioniert alles auch soweit aber in allen anderen Browsern nicht 

Kann mir wer helfen?

Funktion:

```
function insert_text(strText1, strText2,objElem)
{
     if(document.selection)
     {
        objElem.focus();
        document.selection.createRange().text=strText1+document.selection.createRange().text+strText2;
        document.selection.createRange().select();
     }
     else if (objElem.selectionStart || objElem.selectionStart == '0')
     { 
        intStart = objElem.selectionStart;
        intEnd = objElem.selectionEnd;
        
        if(intStart != intEnd){
        insgesammtertext = (objElem.value).substring(0, intStart);
        insgesammtertext += strText1;
        insgesammtertext += (objElem.value).substring(intStart, objElem.value.length);
        insgesammtertext += strText2;
        insgesammtertext += (objElem.value).substring(intEnd, objElem.value.length);
        objElem.value = insgesammtertext;
        objElem.selectionStart=objElem.selectionEnd=intStart+intEnd+strText1.length+strText2.length;
        }else{
        insgesammtertext = (objElem.value).substring(0, intStart);
        insgesammtertext += strText1+strText2;
        insgesammtertext += (objElem.value).substring(intEnd, objElem.value.length);
        objElem.value = insgesammtertext;
        objElem.selectionStart=objElem.selectionEnd=intStart+strText1.length;
        }
        

        objElem.focus();
     }
     else
     {
        objElem.value += strText1+strText2;
     }
}
```

Aufruf:

```
insert_text("",,feld)
```

Feld ist dabei definiert...


----------

