markiertes im Textfeld auslesen

Schaelle

Mitglied
Hallo,
ich möchte den markierten Text in einem textfeld (textarea) herrausbekommen, z.Z. nutze ich folgendes Script, welches aber nur markiertes auf der Seite ausliest, und nicht in Input bzw Textarea-Feldern. Ich hoffe ihr könnt mir weiter helfen.

Script
Code:
function getsel() {
  if (window.getSelection) { sel= window.getSelection(); }
   else if (document.getSelection) { sel = document.getSelection(); }
        else if (document.selection) { sel = document.selection.createRange().text; }
}

mfg Schaelle
 
Hi,

versuche mal, dem Textfeld zunächst den Fokus zu geben und anschliessend den
markierten Bereich auszuwählen.
Code:
// Textfeld den Fokus zuweisen
document.updateForm.txtArea.focus();

// TextRange-Objekt des selektierten Textes erstellen
var selText = document.selection.createRange();
Ciao
Quaese
 
Hi, Danke erstmal ich habe jetzt:


Code:
function getsel() {
  document.form.news.focus();
  if (window.getSelection) { sel= window.getSelection(); }
   else if (document.getSelection) { sel = document.getSelection(); }
        else if (document.selection) { sel = document.selection.createRange().text; }
}

Um das markeirte herraus zubekommen, und so will ich es nutzen:

Code:
function b() {
  getsel();
  text = prompt("fetter Text:",sel);
  if(!(!(text))) {
    if(text != "") {
      document.form.news.value += "[ b ]" + text + "[ /b ]";
    }
  }
}

Nur zurZeit bleibt das Feld noch leer.

Und ich hab auch nich sowirklich Ahnung von JS, is eher Zwangsweise zusammen gebastelt.
Vielleicht kannst mal etwas genauer erklären

mfg
 
Zuletzt bearbeitet:
Hi,

wenn ich Dich richtig verstehe, willst Du mit getsel einen markierten Textbereich
der Textarea auswählen, diesen mit Prompt ausgeben und anschliessend an
den Text in der Textarea anhängen.

Dazu müsstest Du den ausgewählten Text, den Du mit getsel ermittelst, als
Funktionswert zurückgeben.
Code:
function getsel(){
    // Dein bisheriger Code
    return sel;
}
In der Funktion b kannst Du diesen Wert dann entgegennehmen.
Code:
function b(){
    sel = getsel();
    // Dein bisheriger Code
}
Textpassagen in Textareas können nicht fett formatiert werden. Du könntest jedoch
markieren, dass jene Passagen später Formatierungen besitzen sollen - zum
Beispiel in B-Tags setzen.

&nbsp;&nbsp;document.form.news.value += "<b>" + text + "</b>";

Ich hoffe, das hilft Dir weiter.

Ciao
Quaese
 
Hi, ich möchte das nicht Fett machen, es sollte ein BBCODe eingfügt werden, iuch hatte vergessen den zu "escapen" hier im Forum.

Also ich habe jetzt folgenden Code und es geht nicht:
Code:
<html>
<head>
<script type="text/javascript">
<!--
function getsel() {
  document.form.news.focus();
  if (window.getSelection) { sel= window.getSelection(); }
   else if (document.getSelection) { sel = document.getSelection(); }
        else if (document.selection) { sel = document.selection.createRange().text; }
  return sel;
}
function b() {
  sel = getsel()
  text = prompt("fetter Text:",sel);
  if(!(!(text))) {
    if(text != "") {
      m.news.value += "[ b ]" + text + "[ /b ]";
    }
  }
}
//-->
</script>
</head>
<body>
<form name="form">
<textarea name="news">ABCD</textarea><a href="#" onClick="b();">KLICK</a>
</form>
</body>
</html>

mfg

EDIT: Ich weiss, nervig mit mir in Sachen JS, aber kann das nicht wirklich, aber brauch ein BBCode-Interface.
 
Zuletzt bearbeitet:
Hi,

ich habe von einiger Zeit mal etwas ähnliches versucht. Dabei habe ich mir ein
kleines Hilfedokument geschrieben. Den Code habe ich so gut wie möglich
kommentiert. Kannst ja mal darin rumschauen, vielleicht bringt Dich das ja weiter.

Ciao
Quaese
 
Falls du das für ein Board brauchst... bei invisionboard ist diese Funktionalität dabei. (gibts auch gratis)

Falls für etwas anderes, guck dir in irgendeinem Invisionboard beim Beitragserstellen das Formular incl. der Skripte an...man muss das Rad ja nicht neu erfinden :)
 
Hi,
danke
@Quaese: Das im Mozzila Firefox nicht, aber werde es mir mal ankucken, hilft bestimmt :)
@ fatalus: Werd ich auch mal schau :)

mfg Schaelle

EDIT:
@Quaese: Ich krieg das nich hin, ich war froh das ich mit meinem PHP-Wissen die Abfragen in JS hinbekommen habe. Irgendwo hast du ja eine Variabele in der gerade das markierte im Textfeld steht, könntest du mir dein Script bzw ein Part davon so schreiben das ich in einer Variabele das GERADE jetzt markierte im Textfeld habe?
@ fatalus: Ich hab in eins gekuckt, und da hab es die Funktion nicht
 
Zuletzt bearbeitet:
Das entsprechende Skript bei invisionboard nennt sich ibfcode.js ...ich bin mir recht sicher, dass es da ist.

Zu dem Mozilla-Problem beim Skript von Quaese....

die Auswahl des Textfeldes kannst du überall ermitteln.
Die notwendigen Methoden, um die Auswahl im Textfeld durch etwas anderes zu ersetzen, bietet allerdings nur der IE....

ich schätze, deshalb hat Quaese darauf verzichtet, sich um andere Browser zu kümmern, da dort der Nutzeffekt recht gering wäre.(bei invisionboard gehts auch nur im IE)

Man könnte zwar einen Workaround schaffen, der würde aber nur funktionieren, wenn der ausgewählte Text nicht mehrmals in dem Textfeld vorkommt.
 
Problem: Mit document.selection.createRange().text kann man beim Internet Explorer markierten Text ermitteln. Wie mache ich das beim Netscape Navigator?

Lösung: Beim Netscape Navigator geht das mit document.getSelection(). W3C-Standard ist window.getSelection(); das funktioniert bei NN 6.0 aber nicht korrekt.

das habe ich im internet gefunden. bei mozilla gibts das document.selection nicht, da muss man mit docment.getSelection() dahinter. Nur hab ich das nicht zum laufen gekriegt. document.getSelection() gibt ja gleich den String zurück, der markiert ist.

Wenns jemand geknackt hat, bitte melden ;)
 

Neue Beiträge

Zurück