Cursor positionieren (eigentlich eben nicht!) |
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Hallo,
folgende Begebenheit:
Der User kann in einer Textarea mit Hilfe von Javascript Leerzeichen dort einfügen wo er den Cursor setzt, danach springt der Cursor ans Ende des Textes.
Wie kann ich das verhindern?
Grüße,
Al Blank
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Warum braucht man dazu JavaScript?
Ohne das Script geht gar nix.
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Gerne:
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: | function cursor(name_$i) {
$adresse=name_$i;
if (( navigator.userAgent.indexOf("Opera" ) != -1) || ( navigator.userAgent.indexOf("Netscape" ) != -1)) {
text_before = document.forms["formular"].elements[$adresse].value;
text_after = "";
} else {
document.forms["formular"].elements[$adresse].focus();
var sel = document.selection.createRange();
sel.collapse();
var sel_before = sel.duplicate();
var sel_after = sel.duplicate();
sel.moveToElementText(document.forms["formular"].elements[$adresse]);
sel_before.setEndPoint("StartToStart",sel);
sel_after.setEndPoint("EndToEnd",sel);
text_before = sel_before.text;
text_after = sel_after.text;
}
}
function insert(AddCode,name_$i) {
cursor($adresse);
document.forms["formular"].elements[$adresse].value = text_before + AddCode + text_after;
}
function init(thisCode,name_$i) {
$adresse=name_$i;
with ( document.forms["formular"].elements[$adresse].value ) {
switch(thisCode) {
case "aufzaehlung":
insert("• ");
break;
case "abstandshalter":
insert(" ");
break;
}
}
} |
Prinzip ähnlich wie in diesem Forum wenn man einen Smiley einsetzen will. Hier ist es aber so das der Smiley sowieso nur ans Ende des Textes gesetzt wird unabhängig von der Cursorposition.
Mit dem oben stehenden Code wird zwar mein Leerzeichen bzw. Aufzählungspunkt an die Cursorposition geschrieben, allerdings springt er danach wieder ans Ende des Textes.
Will man nun mehrere Leerzeichen hintereinander schreiben dann ist das allerdings ziemlich unpraktisch!
P.S.: Aufgerufen wird das ganze z.B. durch:
onclick="init('abstandshalter','name_$i')"
Diese Nachricht wurde geändert von: Al Blank |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
pfff, blick ich gerade nicht so, aber wofür is das überhaupt gut?
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Deswegen verscuh ich immer den Quellcode zu vermeiden, damit es nicht zu unüberscihtlich wird ;]
aber wofür is das überhaupt gut? |
Prinzip ähnlich wie in diesem Forum wenn man einen Smiley einsetzen will. Hier ist es aber so das der Smiley sowieso nur ans Ende des Textes gesetzt wird unabhängig von der Cursorposition.
Mit dem oben stehenden Code wird zwar mein Leerzeichen bzw. Aufzählungspunkt an die Cursorposition geschrieben, allerdings springt er danach wieder ans Ende des Textes.
Will man nun mehrere Leerzeichen hintereinander schreiben dann ist das allerdings ziemlich unpraktisch! |
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
ja aber warumsetzt man leerzeichen nicht eifnach mit der passenden taste in eine textarea????
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
...meinst Du die Leertaste?
Weil die meißten Browser nur eines zeigen, außer es ist ein geschütztes Leerzeichen.
Mehrere hintereinander werden ignoriert.
Diese Nachricht wurde geändert von: Al Blank |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
dann pack das alles doch in nen -Tag oder lass die Leerzeichen durch PHP oder so umwandeln.
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Das ist aber leider nicht mein Problem sondern die Cursorposition die nach der Eingabe ans Ende des Textes springt.
Hab ich einen Denkfehler oder drück ich mich mißverständlich aus
Diese Nachricht wurde geändert von: Al Blank |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Nein, dein Problem versteh ich wohl, aber ich will idch von JavaScript abbringen, da man das nur nehmen sollte, wenns gar nicht anders geht (was machen User ohne JavaScript?)! Und im pre-Tag würde z.B. jedes Leerzeichen angezeigt!
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Ich steh auf Javascript!
Da kannst Du mich nicht davon abbringen ;))
Diese wundervolle Sprache wurdet entwickelt um Sie zu verwenden, dass Sie so in Verruf geraten ist, ist eine andere Diskussion.
Und im pre-Tag würde z.B. jedes Leerzeichen angezeigt! |
Das ist nicht das Problem, wenn ich will dann werden meine Leerzeichen schon angezeigt!!!!
die Cursorposition die nach der Eingabe ans Ende des Textes springt |
Das ist das Problem!!!!
Nochmal:
Ich mache ein Mini-CMS in dem der User selbst den Inhalt seiner Seite verändern kann.
Das ganze geschieht natürlich über Textareas in der der User seinen Content eingeben kann.
In diesem Textareafeld hat der User die Möglichkeit Textpassagen zu unterstreichen, fett zu machen, kursiv zu schreiben, Aufzählungspunkte an der Cursorposition ein zufügen und Leerzeichen an der aktuellen Cursorposition einzufügen.
Das klappt auch alles wunderbar, nur wenn man z.B. einen Auzählungspunkt an der entsprechenden Position einsetzt dann springt der Cursor ans Ende des Textes in der Textarea!!!
>>> Danke für Dein Engagement, aber ich glaube wir reden aneinander vorbei ;) <<<
Grüße,
Al Blank
Diese Nachricht wurde geändert von: Al Blank |
 Profil
Editieren
Zitieren
|
n0f3aR
Mausakrobat
Beiträge: 154 |
Al Blank schrieb am 25.01.2004 12:25
Ich steh auf Javascript!
Da kannst Du mich nicht davon abbringen ;))
Diese wundervolle Sprache wurdet entwickelt um Sie zu verwenden, dass Sie so in Verruf geraten ist, ist eine andere Diskussion. |
Es geht nicht darum das Javascript in Veruf gerät, sondern das man im Browser Javascript deaktivieren kann, und dann kann man garkeine Leerzeichen mehr einfügen!
Das ist nicht das Problem, wenn ich will dann werden meine Leerzeichen schon angezeigt!!!! |
Doch das ist genau das Problem.
Wenn es eine Lösung ohne Javascript gibt, warum benutzt du sie dann nicht?
Lass die Benutzer doch einfach die Leerzeichen eingeben und danach wandelst du sie um so dass sie richtig angezeigt werden ( & n b s p ; oder pre-Tag benutzen). Dann wird der Text richtig angezeigt, und du ersparst dir dein Problem mit Javascript, da dieses Problem garnicht erst auftritt.
---
Kostenlos Webspace bei funpic.de
Diese Nachricht wurde geändert von: n0f3aR |
 Profil
E-Mail
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Hallo,
danke für den Beitrag, aber bitte lest Euch doch auch das weiter oben durch! Da steht nämlich um was es wirklich geht.
Lass die Benutzer doch einfach die Leerzeichen eingeben |
GENAU DAS WILL ICH DOCH AUCH!!!
Nur will ich das der Benutzer mehrere Leerzeichen hintereinander einsetzen kann, ohne das er ständig den Cursor an die Position setzen muß!
...ich glaube ich eröffne einen anderen Thread, hier komme ich nicht weiter!
MANNO!!
Was ist denn los mit Euch? Ich weiß um die Vorteile und Nachteile von Javascript! Deswegen hab ich den Thread nicht eröffnet.
Das ist doch das selbe als wenn Ihr in diesem Forum einen Beitrag schreiben wollt!!
Mit deaktiviertem Javascript könnt Ihr auch hier nicht einen Smiley einfügen, eine Textpassage unterstreichen oder einen Quellcode markieren.
Heul!
Keiner versteht mich!!!
Diese Nachricht wurde geändert von: Al Blank |
 Profil
Editieren
Zitieren
|
nisita
Posting-Schinder
Beiträge: 540 |
hm, ich denke schon, dass ich dich verstehe..
habe leider nicht wirklich ahnung, von java script.. habe aber was gefunden, was dir vielleicht hilft.. jedenfalls geht es dort..
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: |
Textarea-Test
Einfügen von BB-Code und Smilies mit JavaScript
Funktionoert mit Netscape/Mozilla und IE. Hier werden die BB-Codes um
markierten Text eingefügt und die Smilies an der Curserposition. Mit anderen
Browsern werden die Befehle am Ende eingefügt.
|
hab das bloß auf die schnelle im i-net gefunden.. wenn ich dir auch noch sagen soll, warum bei dir das nicht so funktioniert, wie im beispiel.. das würde bestimmt nochmal nen bissl dauern... bin da nicht so in der materie..
ST
PS:-du willst einfach, dass der curser dort bleibt, wo er war.. -richtig??
---
"Wir sollten lernen, uns allmählich vom Überfluss zu befreien, um zur Einfachheit unseres eigenen Wesens vorzudringen." Jean Gastaldi
|
 Profil
Editieren
Zitieren
|
Al Blank
Quasselstrippe Threadstarter
Beiträge: 379 |
Yipii!
Thx, genau das meinte ich.
1:
2: | document.form_name.textarea_name.focus();
document.selection.createRange().duplicate().text = what; |
--> mit dem Teil funzt es!
Grüße,
Al Blank
|
 Profil
Editieren
Zitieren
|