Avatar billede dd-man Nybegynder
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?
Avatar billede roenving Novice
12. maj 2003 - 15:46 #1
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
Avatar billede roenving Novice
12. maj 2003 - 15:48 #2
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
Avatar billede websmith Nybegynder
12. maj 2003 - 15:49 #3
<select name="testform" onChange="setValues(this.options[this.selectedIndex])">

function setValues(key)
{

}
Avatar billede websmith Nybegynder
12. maj 2003 - 15:50 #4
<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;
    }
}
Avatar billede dd-man Nybegynder
12. maj 2003 - 16:02 #5
Jeg tester lige tingene... vender straks tilbage :)
Avatar billede websmith Nybegynder
12. maj 2003 - 16:04 #6
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 :)
Avatar billede roenving Novice
12. maj 2003 - 16:07 #7
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];
}
Avatar billede roenving Novice
12. maj 2003 - 16:08 #8
-- 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);
}
Avatar billede dd-man Nybegynder
12. maj 2003 - 16:14 #9
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.
Avatar billede roenving Novice
12. maj 2003 - 16:16 #10
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>
Avatar billede roenving Novice
12. maj 2003 - 16:20 #11
Åh, flere felter -- altså 4 eller flere ?-)

Ja, så skal vi lidt længere ud -- det var så nemt med indtil 3 felter !-)
Avatar billede roenving Novice
12. maj 2003 - 16:24 #12
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);
}
Avatar billede dd-man Nybegynder
12. maj 2003 - 16:36 #13
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. :)
Avatar billede roenving Novice
12. maj 2003 - 16:41 #14
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>
Avatar billede dd-man Nybegynder
12. maj 2003 - 17:24 #15
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...
Avatar billede roenving Novice
13. maj 2003 - 17:09 #16
-- 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 ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester