12. maj 2003 - 15:36
Der er
14 kommentarer og 2 løsninger
OnChange med flere input bokse
Hvis jeg tager udgangspunkt i denne: <form> <input type="text" name="test"> <select name="testform" onChange="this.form.test.value = this.options[this.selectedIndex].value"> <option value="1">Nr. 1</option> <option value="2">Nr. 2</option> <option value="3">Nr. 3</option> </select> </form> ------------------------------- Så kunne jeg godt tænke mig at flere input felter blev fyldt. Dvs. hvis jeg vælger: Nr. 2 Så skal <input type="text" name="navn"> <input type="text" name="adresse"> <input type="text" name="tlf"> bliver fyldt med henholdsvis: Børge Æblegrødsvej 2 113-113-113 Mit spørgsmål er så... hvordan er dette muligt?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Sådan: Et script i head: <script language="javascript" type="text/javascript"> function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.navn.value=txt.substring(0,txt.indexOf(";")); s.form.adresse.value=txt.substring(txt.indexOf(";")+2,txt.lastIndexOf(";")); s.form.navn.value=txt.substring(txt.lastIndexOf(";")+2); } <form> <input type="text" name="test"> <select name="testform" onChange="udfyld(this);"> <option value="1">Nr. 1</option> <option value="Børge;Æblegrødsvej 2;113-113-113">Nr. 2</option> <option value="3">Nr. 3</option> </select> </form> hth jes
Hovsa: <script language="javascript" type="text/javascript"> function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.navn.value=txt.substring(0,txt.indexOf(";")); s.form.adresse.value=txt.substring(txt.indexOf(";")+2,txt.lastIndexOf(";")); s.form.tlf.value=txt.substring(txt.lastIndexOf(";")+2); } Ideen er, at du gør dine values i selecten til en sammensætning af de værdier, du vil have udfyldt med. Evt. kan du oprette en liste med værdier, der kan slås op i
<select name="testform" onChange="setValues(this.options[this.selectedIndex])"> function setValues(key) { }
<select name="testform" onChange="setValues(this.options[this.selectedIndex])"> function setValues(key) { switch(key) { case 1: break; case 2: document.testform.navn.value='Børge'; document.adresse.navn.value='Æblegrødsvej 2'; document.tlf.navn.value='113-113-113'; break; case 3: break; default: break; } }
Jeg tester lige tingene... vender straks tilbage :)
Du kunne også slå op i en liste med navne, adresser og telefonnumre: fx var navn =new Array(); var adresse=new Array(); var tlf=new Array(); navn[1]="websmith"; adresse[1]="Min adresse"; tlf[1]="mit telefon"; navn[2]="Børge"; adresse[2]="Æblegrødsvej 2"; tlf[2]="113-113-113"; function setValues(key) { document.testform.navn.value=navn[key]; document.adresse.navn.value=adresse[key]; document.tlf.navn.value=tlf[key]; } Noget smartere :)
Skal du bruge spindelvævssmedens skal du lige være opmærksom på: function setValues(key) { document.testform.navn.value=navn[key]; document.testform.adresse.value=adresse[key]; document.testform.tlf.value=tlf[key]; }
-- og <gaaab>... det skal selvfølgelig være: <script language="javascript" type="text/javascript"> function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.navn.value=txt.substring(0,txt.indexOf(";")); s.form.adresse.value=txt.substring(txt.indexOf(";")+1,txt.lastIndexOf(";")); s.form.tlf.value=txt.substring(txt.lastIndexOf(";")+1); }
Jeg forstår ikke websmiths metode... roenving: Det ser ud til at virke det du gav... function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.navn.value=txt.substring(0,txt.indexOf(";")); s.form.adresse.value=txt.substring(txt.indexOf(";")+1,txt.lastIndexOf(";")); s.form.tlf.value=txt.substring(txt.lastIndexOf(";")+1); } Hvordan tilføjer jeg flere felter i dit eksempel? kan ikke se noget som går igen... alle linier er lidt forskellige.
Du gør det i selecten: <select name="testform" onChange="udfyld(this);"> <option value="Karen;Pærevællingvej 17;315-654-987">Nr. 1</option> <option value="Børge;Æblegrødsvej 2;113-113-113">Nr. 2</option> <option value="Anders;Hovedvejen 57;80 80 80 80">Nr. 3</option> </select>
Åh, flere felter -- altså 4 eller flere ?-) Ja, så skal vi lidt længere ud -- det var så nemt med indtil 3 felter !-)
function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.navn.value=txt.substring(0,txt.indexOf(";")); var t=txt.substring(txt.indexOf(";")+1); s.form.adresse.value=t.substring(0,txt.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.postnr.value=t.substring(0,txt.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.by.value=t.substring(0,txt.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.tlf.value=t.substring(txt.lastIndexOf(";")+1); }
Jeg bruger nu: <script language="javascript" type="text/javascript"> function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.kundenr.value=txt.substring(0,txt.indexOf(";")); var t=txt.substring(txt.indexOf(";")+1); s.form.kundenavn.value=t.substring(0,txt.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.kundeadresse.value=t.substring(0,txt.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.kundepostby.value=t.substring(txt.lastIndexOf(";")+1); } </script> og kode: echo "<option value=\"$row_kunder[kundenr];$row_kunder[kundenavn];$row_kunder[kundeadresse];$row_kunder[kundepostby]\">$row_kunder[kundenavn]</option>"; Som i HTML udskriver: <option value="21;Firmanavn; Vejnavn 24;1234 København">1</option> Det den skriver i HTML er vel fint nok... men de felter den udfylder.. ja... Kundenr: 21 firmanavn: Fi Adresse: Ve postnr & by: (ingen ting) Så der er en lille fejl et sted. :)
Uff, der var en manglende konsekvensrettelse -- (troede ellers jeg havde fået alle med ;-): <script language="javascript" type="text/javascript"> function udfyld(s){ txt=s.options[s.selectedIndex].value; s.form.kundenr.value=txt.substring(0,txt.indexOf(";")); var t=txt.substring(txt.indexOf(";")+1); s.form.kundenavn.value=t.substring(0,t.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.kundeadresse.value=t.substring(0,t.indexOf(";")); t=t.substring(t.indexOf(";")+1); s.form.kundepostby.value=t.substring(t.lastIndexOf(";")+1); } </script>
Hov, glemte lige at sige at det virkede og jeg bruger det nu, mange tak. :) Jeg forstår dog stadig ikke den javascript som jeg bruger, har ikke set den før...
-- fidusen er, at vi klipper det af, vi _har_ aflæst, så kan vi bere søge fra atart hver gang ... -- og velbekomme og tak for points ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling