Formularfeld füllen
Makrus
- javascript
0 Robert Bamler0 Markus
Hi Leute!
Habe ein Suchformular mit den Feldern "PLZ" und "Ort"
Möchte haben wenn eine bestimmte PLZ eingeben wird das Ortsfeld automatisch mit dem jeweiligen Ort gefüllt wird.
zb. Wenn PLZ= 1010 dann sollte bei Ort "Wien" erscheinen..
Wie funktioniert das?
so gehts leider nicht:
if (plz== "1010") ort="Wien";
// plz und ort wurden vorher deffiniert.
Wie macht man das?
Wäre über eine Hilfe sehr dankbar!
MFG
Markus
Hallo Makrus,
if (plz== "1010") ort="Wien";
// plz und ort wurden vorher deffiniert.
Dann weist du einer Variablen mit dem Namen "ort" eben den Wert "Wien" zu. Aber eigentlich wolltest du doch den Ort im Formularfeld ausgeben:
if (document.formularname.PLZ.value == "1010")
document.formularname.ort.value = "Wien";
Wenn du das für alle Orte brauchst, solltest du es aber eher serverseitig realisieren, weil sonst die HTML-Seite ziemlich groß wird. Wenn du es auf einige wenige Orte beschränkst, wäre wahrscheinlich ein Hash oder zweidimensionales Array am praktischsten.
Viel Erfolg,
Robert
HI Robert
Danke für deine Hilfe!
Habs jetzt so:
var plz=document.Formular.PLZ.value;
var ort=document.Formular.Ort.value.toLowerCase();
if (plz == "1010") document.Formular.Ort.value = "Wien";
Die erste deffinierte variable kann ich doch verwenden.. nur mit der 2 gehts nicht(ort)
wie macht man sowas eigentlich serverseitig?(zb. mit asp)
Bzw. was ist ein Hash bzw. 2dimensionalles array? wie gehe ich sowas an?
Wenn du das für alle Orte brauchst, solltest du es aber eher serverseitig realisieren, weil sonst die HTML-Seite ziemlich groß wird. Wenn du es auf einige wenige Orte beschränkst, wäre wahrscheinlich ein Hash oder zweidimensionales Array am praktischsten.
MFG
Markus
Hallo Markus,
wie macht man sowas eigentlich serverseitig?(zb. mit asp)
Mit ASP kenne ich mich leider nicht aus. Aber im Prinzip funktioniert das serverseitig halt so, dass man eine Postleitzahl angibt und dann auf einen Absendebutton mit der Beschriftung "Ort suchen" (oder so ähnlich) klickt. Die Formulardaten werden dann an den Server geschickt, der ein Programm (oder Skript) startet. Dieses Programm ließt die Postleitzahl aus und sucht in einer Datenbank nach dem entsprechenden Ort. Wenn das Programm einen passenden Ort gefunden hat, erstellt es eine HTML-Seite, in der Ort und Postleitzahl bereits in den Eingabefeldern voreingestellt sind (<input type="text" name="PLZ" value="1010" />) und schickt diese an den Browser zurück.
Der Vorteil ist hier, dass die Datenbank mit den Orten sehr groß sein kann (sehr viele Orte und dazugehörige Postleitzahlen enthalten kann), ohne dass große Datenmengen an den Browser übertragen werden müssen.
Bzw. was ist ein Hash bzw. 2dimensionalles array? wie gehe ich sowas an?
Ein Array ist eine (geordnete) "Kette" von Variablen. Dabei kannst du jeden Eintrag mit einem Index (einer Zahl) ansprechen. In JavaScript kannst du Arrays z.B. so erstellen:
var meinArray = new Array("erster Eintrag","zweiter Eintrag","dritter Eintrag",...);
Und dann kannst du so auf die einzelnen Einträge zugreifen:
alert(meinArray[1]);
(Das würde den Text "zweiter Eintrag" ausgeben, weil bei 0 zu zählen begonnen wird.)
Ein zweidimensionales Array ist dann ein Array, bei dem man die Einträge nicht mit einem, sondern mit zwei Indizes ansprechen muss. Etwa so:
alert(zweidimensionalesArray[1][0]);
Genauer gesagt ist ein zweidimensionales Array ein Array, bei dem alle Einträge wieder Arrays sind. Du könntest deine Datenbank also etwa so anlegen:
datenbank = new Array(
new Array("1010", "Wien"),
new Array("1234", "Was auch immer"),
new Array("5678", "Noch ein Ort")
);
(Ich kenne eure Postleitzahlen natürlich nicht.)
Dann kannst du einen Eintrag suchen:
for (i=0; i<datenbank.length; i++) {
if (datenbank[i][0] = plz) {
document.Formular.Ort.value = datenbank[i][1];
break;
}
(Muss aber zugeben, dass das etwas umständlich und auch nicht besonders performant ist.)
Ein Hash ist sozusagen ein Array, dessen Einträge man aber nicht über eine Zahl als Index, sondern über einen String ansprechen kann. Etwa so:
meinHash["1010"] = "Wien";
document.Formular.Ort.value = meinHash[plz];
Wie genau Hashs in JavaScript funktionieren und wie sicher das ist, weiß ich aber nicht, weil ich das noch nie gebraucht habe.
Viel Erfolg,
Robert