rocky112
Goto Top

Wert aus vorherigem formularfeld übernehmen

Hallo Leute, ich habe ein Formularfeld, in dem ich in ein Formularfeld ein Datum eintrage.
Genau dieses Datum möchte ich sofort weiter unten in einem anderen Formularfeld auch eingetragen haben, wie kann ich das machen, ohne vorher etwas verschicken zu mussen?

Ich kann es nicht einfach beides in ein MySQL Feld speichern, da ich den Wert evtl. noch editieren möchte.

Kann mir jemand helfen?

Vielen Dank.

Grüße Rocky

Content-Key: 160181

Url: https://administrator.de/contentid/160181

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: maretz
maretz 05.02.2011 um 08:55:41 Uhr
Goto Top
Naja - per Java-Script wäre das möglich....
Mitglied: Rocky112
Rocky112 05.02.2011 um 11:14:53 Uhr
Goto Top
Zitat von @maretz:
Naja - per Java-Script wäre das möglich....

Hallo, hättest Du evtl ein Beispiel?

Vielen Dank!

Grüße
Mitglied: Guenni
Guenni 05.02.2011 um 18:37:02 Uhr
Goto Top
Hi Rocky112,

du schreibst einfach eine Funktion, die den Wert von Quelle (src) dem Ziel (dest) zuweist.

Mit document.getElementById(string 'ID_des_Elements') findest du das entsprechende

Element, die Eigenschaft, die du lesen oder ändern möchtest, hängst du mit einem Punkt an.

Das Event onblur reagiert, wenn das entspr. Element seinen Fokus verliert und ruft dann

die Funktion auf. Das übergebene Argument this, siehe Formular, ist ein Zeiger auf das

Element selber.

<html>

<head>

<title>Untitled</title>

<script type="text/javascript">  

<!--

function copy_value(src,dest){

 document.getElementById(dest).value=src.value;

}

// -->

</script>

</head>

<body>

<form action="" method="post">  

<input type="text" name="date1" id="input1" onblur="copy_value(this,'input2')">  

<input type="text" name="date2" id="input2">  

</from>

</body>

</html>

Gruß
Günni

PS.: Entspr. Lesematerial ist sehr wichtig, da bei Java die korrekte Schreibweise eingehalten muß.

Auch die Bezeichnung von Eigenschaften ist in CSS und Java verschieden.
Mitglied: Rocky112
Rocky112 05.02.2011 um 23:13:45 Uhr
Goto Top
hey günni,

perfekt, das war genau das, was ich gesucht habe!!!

jetzt aber noch eine frage. ich habe oben drei formularfelder. datum_tag, datum_monat und datum_jahr.

unten habe ich jetzt aber nur eines. geht es irgendwie, dass ich es in das eine formularfeld (datum1) so reinkopieren, dass sich aus den drei formularfeldern jeweil mit "punkten" dazuwischen in datum1 das datum bildet?

ist knifflig ich weis, ich würde aber nur ungern das formularfeld datum1 in drei felder aufteilen.

vielen dank ;)
Mitglied: Guenni
Guenni 06.02.2011 um 00:51:51 Uhr
Goto Top
Hi Rocky112,

ist vom Prinzip her das Gleiche, nur muß die Funktion dann immer aufgerufen werden, wenn

eins der 3 Textfelder geändert wurde.

Du holst dir in der Funktion einfach wieder mit document.getElementById die Werte

der Textfelder tag, monat, jahr. Dann setzt du die Werte einfach mit + und dem Punkt

in Anführungszeichen dazwischen zusammen und weist dem Textfeld datum dann den String zu.

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function copy_value(dest){
 var tag=document.getElementById('tag').value; 
 var monat=document.getElementById('monat').value; 
 var jahr=document.getElementById('jahr').value; 
 var datum=tag + "." + monat + "." + jahr; 
 document.getElementById(dest).value=datum;
}
// -->
</script>
</head>
<body>
<form action="" method="post">  
Tag <input type="text" name="tag" id="tag" onblur="copy_value('datum')">  
Monat <input type="text" name="monat" id="monat" onblur="copy_value('datum')">  
Jahr <input type="text" name="jahr" id="jahr" onblur="copy_value('datum')">  
Datum <input type="text" name="datum" id="datum">  
</from>
</body>
</html>

Gruß
Günni

PS.: Wenn wir schon dabei sind . . . face-smile

Wenn das einzugebene Datum immer (oder fast immer) das aktuelle Tagesdatum sein wird,

so kannst du die Felder auch beim Laden der Seite automatisch füllen. Dazu brauchst du dann

eine weitere Funktion, die das beim Laden der Seite erledigt. Und ändern kann man ja das Datum

immer noch.

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function init_datum(){
 var heute=new Date();
 var tag=heute.getDate();
 var monat=heute.getMonth()+1;
 if(tag < 10){tag="0"+tag;}  
 if(monat < 10){monat="0"+monat;}  
 document.getElementById('tag').value=tag;  
 document.getElementById('monat').value=monat;  
 document.getElementById('jahr').value=heute.getFullYear();  
 copy_value('datum');  
}

function copy_value(dest){
 var tag=document.getElementById('tag').value;  
 var monat=document.getElementById('monat').value;  
 if(tag.length < 2 ){tag="0"+tag;}   
 if(monat.length < 2 ){monat="0"+monat;}   
 var jahr=document.getElementById('jahr').value;  
 var datum=tag + "." + monat + "." + jahr;  
 document.getElementById(dest).value=datum;
}
// -->
</script>
</head>
<body onload="init_datum()">  
<form action="" method="post">  
Tag <input type="text" name="tag" id="tag" onblur="copy_value('datum')">  
Monat <input type="text" name="monat" id="monat" onblur="copy_value('datum')">  
Jahr <input type="text" name="jahr" id="jahr" onblur="copy_value('datum')">  
Datum <input type="text" name="datum" id="datum">  
</from>
</body>
</html>
Mitglied: Rocky112
Rocky112 06.02.2011 um 16:55:32 Uhr
Goto Top
hey günni,

du bist der beste! vielen vielen dank!

eine alleletzte frage noch.

ich habe noch ein formularfeld "datum2", welches den gleichen wert bekommen soll. wie kriege ich das hin? sprich wenn ich in tag monat jahr etwas eintrage sollten diese werte automatisch in datum1 und datum2 kopiert werden.

außerdem habe ich gelesen, dass ich mit dieser onblur funktion auch formularfelder grün umrahmen kann, sobald etwas eingetragen ist. hast du da noch einen tipp für mich?

vielen vielen dank schonmal. bis mein held des tages ;)

grüßle rocky
Mitglied: Guenni
Guenni 09.02.2011 um 17:21:09 Uhr
Goto Top
Hi rocky,

. . . ich habe noch ein formularfeld "datum2", welches den gleichen wert bekommen soll. wie kriege ich das hin? . . .

Also jetzt müsstest du es aber langsam blicken. face-wink Du brauchst doch nur innerhalb der Funktion mittels

document.getElementById('ID_des_Textfelds').value=Wert den Wert in ein zweites Textfeld zu kopieren.

. . . außerdem habe ich gelesen, dass ich mit dieser onblur funktion auch formularfelder grün umrahmen kann, sobald etwas eingetragen ist. . . .

OnBlur ist keine Funktion, sondern ein sog. Eventhandler, dem man eine Funktion "quasi" zuweisen kann. OnBlur ist ein Eventhandler der reagiert,

sobald ein Element den Fokus verliert. Bei Veränderung müsstest du den Eventhandler OnChange mit einer Funktion belegen.

Ich hatte dir ja schon geschrieben, zu JavaScript ist Lektüre Pflicht, ohne du kommst ohne nicht weit. Zu Eventhandlern siehe

z.B.: ==> http://de.selfhtml.org/javascript/sprache/eventhandler.htm

Und wenn du Element-Eigenschaften (Rahmenfarbe) mittels JavaScript lesen bzw. ändern möchtest, so musst du die JavaScript-Eigene Syntax für

diese Eigenschaften verwenden. Siehe z.B.: http://de.selfhtml.org/javascript/objekte/style.htm

Ein Beispiel noch . . .

Ein Formular-Textfeld, wenn das Feld den Fokus erhält (anklicken) ändern sich Rahmen- und Hintergrundfarbe.

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function changeBorderColor(obj){
 obj.style.borderColor="#ff0000"; 
 obj.style.backgroundColor="#00aa00"; 
}
// -->
</script>
</head>
<body>
<form action="" method="">  
<input type="text" name="textfeld" onfocus="changeBorderColor(this)" />  
</form>
</body>
</html>

. . . und dann erwarte ich ein bißchen Eigeninitiative. Ich kann dir nicht für jede Anforderung den Code "vorkauen". Ein bißchen was musst du auch selber beitragen.

Gruß
Günni
Mitglied: Rocky112
Rocky112 09.02.2011 um 17:57:41 Uhr
Goto Top
Hey Günni,

vielen Dank, jetzt habe ich es perfekt!

Ich danke Dir wirklich vielmals, hast mir übelst geholfen!!!

Wünsche Dir noch einen schönen Tag.

Grüßle Rocky

PS: Bevor ich die Frage gestellt hatte, hatte ich ja schon einiges ausprobiert, aber dachte nicht, dass es so einfach geht, dass ich einfach noch mal das selbe darunter schreibe ;)