von dropdown in textfeld

Status
Nicht offen für weitere Antworten.

ultrakollega

Erfahrenes Mitglied
Ich habe ein Dropdownfeld mit einem Button daneben:

Code:
<select name="magic" id="magic" input class = "textboxen">
<option value="&lt;ANREDE&gt;">Anrede</option>
<option value="&lt;VORNAME&gt;">Vorname</option>
<option value="&lt;NACHNAME&gt;">Nachname</option>
<option value="&lt;STRASSE&gt;">Stra&szlig;e</option>
<option value="&lt;PLZ&gt;">PLZ</option>
<option value="&lt;ORT&gt;">Ort</option>
<option value="&lt;LAND&gt;">Land</option>
<option value="&lt;EMAIL&gt;">Email</option>
<option value="&lt;GRUPPEN&gt;">Gruppe(n)</option>
</select> 
<input onClick="insert_magic('window.document.frm_isp.magic.options[window.document.frm_isp.magic.SelectedIndex].value')"name="btn_magic" type="button" class = "buttons" id="btn_magic" value="Einf&uuml;gen" input>

Nun möchte ich das wenn ich zum Beispiel im Dropdownfeld
"Nachname" wähle, der Value von Nachname in einem Textfeld
erscheint -> also <NACHNAME>

da hätte ich ein javascript:

Code:
function insert_magic(wert) {
iView.focus();
iView.document.body.innerText = wert;
}

So, das funktioniert auch jetzt, wenn ich aus dem dropdown
was auswähle steht das jetzt im feld iView. Doch wenn ich
eine zweite Auswahl treffe, zB "Straße" wird im Feld iView
alles überschrieben.

Im Prinzip soll sich der zweite Wert anhängen und nicht den
ersten Wert überschreiben!

mfg
 
Zuletzt bearbeitet:
Hoi,

zu deinem Dokumentaufbau und Script folgende Dinge:

1)
Ein umschließendes <form name="frm_isp" ...>...</form> hast du hoffentlich nicht vergessen...

2)
Wofür willst du einen String übergeben, wenn du doch einen evaluierten Wert in das Textfeld eintragen willst?

3)
JavaScript ist case-sensitive, die Eigenschaft heißt selectedIndex, nicht SelectedIndex.

4)
Woher weiß deine Funktion "insert_magic" über den Inhalt der Variable "iView" bescheid?

Das alles solltest du berücksichtigen, ein funktionables Beispiel anbei:

Die Funktion wie folgt:
PHP:
<script type="text/javascript" language="JavaScript">
<!--

function insert_magic(wert) {
	var ele = document.getElementById("iView");
	ele.focus();
	ele.value = wert;
}

//-->
</script>
und ein Formular, das wie folgt aussieht:
PHP:
<form name="frm_isp">
<select name="magic" id="magic">
<option value="&lt;ANREDE&gt;">Anrede</option>
<option value="&lt;VORNAME&gt;">Vorname</option>
<option value="&lt;NACHNAME&gt;">Nachname</option>
<option value="&lt;STRASSE&gt;">Straße</option>
<option value="&lt;PLZ&gt;">PLZ</option>

<option value="&lt;ORT&gt;">Ort</option>
<option value="&lt;LAND&gt;">Land</option>
<option value="&lt;EMAIL&gt;">Email</option>
<option value="&lt;GRUPPEN&gt;">Gruppe(n)</option>
</select> 
<input onClick="insert_magic(this.form.magic.options[this.form.magic.selectedIndex].value);" type="button" value="Einfügen"><br>
<input type="text" id="iView">
</form>
hth,
Geist
 
hat sich erledigt, die funktion muss natürlich so aussehen:

Code:
function insert_magic(wert) {
iView.focus();
iView.document.body.innerText = iView.document.body.innerText + wert;
}

mfg
 
Geist hat gesagt.:
Hoi,

zu deinem Dokumentaufbau und Script folgende Dinge:

1)
Ein umschließendes <form name="frm_isp" ...>...</form> hast du hoffentlich nicht vergessen...

2)
Wofür willst du einen String übergeben, wenn du doch einen evaluierten Wert in das Textfeld eintragen willst?

3)
JavaScript ist case-sensitive, die Eigenschaft heißt selectedIndex, nicht SelectedIndex.

4)
Woher weiß deine Funktion "insert_magic" über den Inhalt der Variable "iView" bescheid?

zu punkt 1:

nein, natürlich nicht ....

zu punkt 2:

das ist ein newsletter, inden man "magische Felder" einfügen kann.
die magischen felder werden beim versenden ersetzt durch die wahren
daten der jeweiligen person.

zu punkt 3:

hab ich auch bereits gemerkt.

zu punkt 4:

versteh ich nix ganz

*******************************

funktioniert jetzt so wie ich will, trotzdem vielen dank!
 
und schon das nächste problem

das ganze sieht dann so aus:

chk3.gif


wenn ich jetzt ein "magisches feld" einfüge, soll es immer an der
aktuellen cursor position eingefüt werden.

im moment wird es immer ganz am schluss eingefügt, ist auch
klar wenn i mir die funktion ansehe von mir.

wie mach ich das er mir das feld an der aktuellen cursor pos.
einfügt??
 
Da kannst du derzeit nur im Internet Explorer was regeln über das selection-Objekt...

Noch schnell was zu den vorigen Punkten:
1 und 3 haben sich geklärt, zu 2. und 4. ein paar Worte.

resp. 2)
Du hast ja in deinem JavaScript-Code irgendwo einen Aufruf der Funktion "insert_magic", welcher eine Argumentübergabe optional bietet.
In ebendiesem Aufruf übergibst du auch tatsächlich ein Argument, aber nicht etwa den Inhalt des Dropdown-Menüs, welchen du über window.document.frm_isp.magic.options[window.document.frm_isp.magic.SelectedIndex].value evaluieren würdest, sondern du übergibst nur einen String 'window.document.frm_isp.magic.options[window.document.frm_isp.magic.SelectedIndex].value', dem der Wert des ausgewählten Objektes völlig egal ist. :)

resp. 4)
Du verwendest in deiner Funktion einfach eine Referenz namens "iView" - wo wird diese definiert?
Falls dies der Wert des id-Attributes deines Texteingabefeldes ist, dann wäre das, was du dort an Code verwendest, nicht JavaScript sondern JScript und wäre damit nur im M$ Internet Explorer lauffähig, nirgends sonst.

Wenn du für alle Browser korrekt referenzieren willst, dann am besten über die Methode getElementsById(), wie in meinem Beispiel, oder über das forms-Objekt des Dokumentes, das kennt wenigstens auch jeder Browser.

Gruß,
Geist
 
also das iView ist eigentlich ein IFrame:

Code:
<iframe id="iView" style="width: 555px; height:205px"></iframe>

und wird so initialisiert oder so ähnlich ...

Code:
function Init()
  {
    iView.document.designMode = 'On';
  }

kann ich das iView nun eigentlich so behandeln wie ein normales
textfeld oder geht das nicht mehr?

bzgl. der cursorposition habe ich auch schon das probiert:

http://www.tutorials.de/forum/showthread.php?threadid=66930&highlight=cursorposition

wollte aber irgendwie nicht.

hier der code so wie ich ihn bei mir habe:

Code:
function cursor() { 
  if (( navigator.userAgent.indexOf("Opera" ) != -1) || ( navigator.userAgent.indexOf("Netscape" ) != -1)) { 
    text_before = iView.document.body.innerText; 
    text_after = ""; 
  } else { 
    iView.focus(); 
    var sel = document.selection.createRange(); 
    sel.collapse(); 
    var sel_before = sel.duplicate(); 
    var sel_after = sel.duplicate(); 
    sel.moveToElementText(iView.document.body.innerText); 
    sel_before.setEndPoint("StartToStart",sel); 
    sel_after.setEndPoint("EndToEnd",sel); 
    text_before = sel_before.text; 
    text_after = sel_after.text; 
  } 
} 

function insert_magic(wert) { 
  cursor(); 
  iView.document.body.innerText = text_before + wert + text_after; 
  iView.focus(); 
}

vielleicht fällt dir ja was ein?
 
so gehts

also ich hab's nun geschaft:

und zwar so ... wenn's wenn interessiert ...

Code:
function insert_magic(wert)
{
window.clipboardData.setData("Text",wert);
iView.focus();
iView.document.execCommand('paste', false, wert);
}

mfg
 
Status
Nicht offen für weitere Antworten.
Zurück