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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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