PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingabefeld mit Select-Liste



Molaf
06-08-2009, 08:51
Hallo allerseits,

ich bin grade dabei ein bestehendes HTML-Formular mit weiteren Gimmicks aufzupeppen.
Ein Eingabefeld soll sich verhalten wie die URL-Eingabeleiste des Browsers, d.h. eine Texteingabe ist jederzeit möglich, wenn aber ein Eintrag aus dem Verlauf gewählt wird, soll die Texteingabe damit überschrieben werden.

Ich meinte mich an ein Beispiel aus Selfhtml zu erinnern, wo das nötige JS dazu zu finden ist, da scheine ich mich aber falsch erinnert zu haben, das gibt es so garnicht.

Meine Frage lautet also: Wie heißt das richtige Event in JS wenn man einen Eintrag aus einer Selectliste auswählt (damit ich den Wert dann in das Textfeld schrieben kann) ?

Gruß,
Molaf

Jor
06-08-2009, 17:51
Hi,

wenn ich dich richtig verstanden habe, dann hast du, u. a., ein beschreibbares Textfeld und eine Auswahllist. Wenn nun ein Wert
aus der Auswahlliste ausgewählt wird, soll dieser dann in das Feld
eingetragen werden, der bisherige Wert wird überschrieben.

So etwas kann du m. E. am Besten mittels Javascript lösen. Mit dem "onChange-Event" der Auswahlliste wird eine Funktion verknüpft, welche
den Rest erledigt. Ohne jetzt auf Fehleingabe zu testen usw. könnte es so aussehen:
function SetField( field_name ) {
/*mein Feldname = ass#name_nummer (ass=Assortment)*/
var pos=field_name.indexOf("#")+1;
/*Der erste Teil wird abgeschnitten, dadurch entsteht der Zielfeldname*/
var set_field_name = field_name.substring(pos);
/*Zielfeld holen*/
var field = document.getElementById(set_field_name);
/*Beschreibe Zielfeld [Wert übernehmen aus Auswahlliste]*/
field.value=document.getElementById(field_name).va lue
/*Auswahlliste löschen [erster Eintrag ist "" ]*/
document.getElementById(field_name).value="";
/*Setze Fokus in Zielfeld*/
field.focus();
}

So wird der Aufruf mit der Auswahllist verknüpft:
<select name='$field_name' style='width: 215px;' onchange='SetAuthPaintField(\"$field_name\" )'>

Obiger Code ist ein funktionsfähiges, aber sicher noch verbesserbares,
Beispiel.

Hoffe es hilft dir.

Molaf
07-08-2009, 08:17
Hi,

ich habe es inzwischen so gelöst:
JS:

function JS_Material(value)
{document.getElementById("ID_Material").value=value;}


HTML:


<input type="text" name="RN_Material" size="40" maxlength="255"
class="normdata" id="ID_Material" />

<select name="VG_Material" onclick="JS_Material(this.value)">
<option value=""></option>
<option value="0.12">0.12</option>
<option value="0.122">0.122</option>
<option value="0.125">0.125</option>
<option value="0.3">0.3</option>
<option value="0.25">0.25</option>
<option value="0.22">0.22</option>
<option value="0.2">0.2</option>
</select>

Durch onClick wird zwar das Eingabefeld schon gelöscht wenn man die Auswahl erst beginnt, aber das Verhalten finde ich tolerabel. onChange scheint aber tatsächlich die bessere Wahl zu sein, ich ändere das demnächst nochmal.

Danke für die Antwort
Molaf