Gå til innhold

Utfylling av HTML-felt, arve et annet felt


Anbefalte innlegg

Litt vanskelig å forklare, men jeg skal forsøke med enkel kode:

 

<select name="Felt1">
<input>Verdi 1</input>
<input>Verdi 2</input>
</select>

<input type="tekst" name="Felt2">

 

Det jeg trenger er et javascript som, etter at man har valgt en verdi i rullegardinen, automatisk fyller den samme verdien inn i input for "Felt2".

 

Noen som har roen på dette?

Lenke til kommentar
Videoannonse
Annonse

Du har litt feil i koden din, og du må ha alt i en form for å bruke denne enkle metoden.

 

<html>
<body>
<form name="form1">
<select name="Felt1" onchange="document.form1.Felt2.value=this.value">
<option value="">Velg verdi</option>
<option value="Verdi 1">Verdi 1</option>
<option value="Verdi 2">Verdi 2</option>
</select>

<input type="tekst" name="Felt2">
</form>
</body>
</html>

 

Select har undergruppen option, ikke input, og input må ha value for å få tak i dataene, innerHTML returnerer "for mye". Jeg la inn en "Velg verdi" for å la "Verdi 1" kunne bli valgt enkelt.

Endret av Kagee
Lenke til kommentar

<form name="form1">
<select name="Felt1" onchange="document.form1.Felt2.value=this.value">
<option value="">Velg verdi</option>
<option value="001">Verdi 1</option>
<option value="002">Verdi 2</option>
</select>

<input type="tekst" name="Felt2">
</form>

 

Har en litt hardere nøtt: I databasen lagrer jeg en tallverdi ikke "synlig" for den som velger. Tallverdien ligger i "value". Hvordan kan jeg få javascriptet til å sende det som står mellom <option></option>, altså tekstverdien, inn i felt 2?

Lenke til kommentar

.text funket dårlig (sjekk det raskt i Tryit Editor, link i sig), men denne litt stygge koden fungerte i FF på Ubuntu.

<html>
<body>
<form name="form1">
<select name="Felt1" onchange="document.form1.Felt2.value=document.getElementById('op' + this.value).innerHTML">
<option id="op0" value="0">Velg verdi</option>
<option id="op2" value="1">Verdi 1 text</option>
<option id="op1" value="2">Verdi 2 text</option>
</select>

<input type="tekst" name="Felt2">
</form>
</body>
</html>

 

Den finner ut hvilken verdi select har (hvilken option du har valgt) og finner ID til option derfra, og henter innerTHML fra den option. Litt kludrede forklart, men eksempelet fungerer. Et krav er at option-id og option-value samsvarer som vist - er det mulig i din applikasjon?

Endret av Kagee
Lenke til kommentar

Jeg sitter her å ser på det siste spørsmålet ditt, og jeg klarer bare ikke å skjønne hva du mener.

 

Det kan hende jeg er sliten av å ha jobbet lenge på et kontor med vintertempratur på ovnene, men det er jo alltid option-value som sendes fra document.form1.Felt1, koden jeg bruker i select-onchange flytter jo bare teksten fra option-innerHTML til Felt2 (som du ønsket)

Lenke til kommentar

Eksempel på hva jeg tenkte på:

 

<html>
<body>
<form name="form1">
<select name="Felt1" onchange="document.form1.Felt2.value=this.id">
<option value="">Velg verdi</option>
<option id="Verdi 1" value="001">Verdi 1</option>
<option id="Verdi 2" value="002">Verdi 2</option>
</select>

<input type="tekst" name="Felt2">
</form>
</body>
</html>

Lenke til kommentar
Eksempel på hva jeg tenkte på:

 

<html>
<body>
<form name="form1">
<select name="Felt1" onchange="document.form1.Felt2.value=this.id">
<option value="">Velg verdi</option>
<option id="Verdi 1" value="001">Verdi 1</option>
<option id="Verdi 2" value="002">Verdi 2</option>
</select>

<input type="tekst" name="Felt2">
</form>
</body>
</html>

8397531[/snapback]

 

Nei - da ville Felt2 blitt id'en til Felt1 - "undefined"

 

Man kan kanskje bruke en on*ettellerannet på option-feltene. Kan ikke prøve det ut akkurat nå, men hvis ingen slår meg, skal jeg komme med et eksempel. (hvis det er mulig)

Endret av Kagee
Lenke til kommentar

Har ikke lest hele tråden såå nøye, men du fyller ut nedtrekkslista med verdier hentet ut fra en database? Da bør du absolutt bruke id'n fra databasen som value og "regne" deg tilbake når brukeren sender skjemaet. Det er uansett bra prakis og gjør det vanskeligere for folk å ødelegge.

Lenke til kommentar

For å gjøre det hele enkelt. Det man velger i rullegardinen skal automatisk kopieres til et nytt tekstfelt. Og jeg vil ikke ha det i "value" kopiert, men tekst-strengen som står mellom option.

 

Grunn: Jeg har en database med albumomtalet og artister. Når et nytt album legges inn, får brukeren en rullegardin med artister. Hver artist har en ID i tabellen. Det er ID-en som skal lagres, slik at en link til artist-siden kan genereres. I tillegg ønsker jeg altså selve navnet på artisten lagret i et eget felt i tabellen for albumet. For at den som legger inn albumet skal slippe å både velge artist i rullegardin, og å skrive inn navnet på artisten i et nytt felt, ønsker jeg at navnet skal lagres med en "hidden" "input" helt automatisk.

Lenke til kommentar

Testet ut nå, men det skjer ingenting.

 

Her er koden:

 

<form method="post" action="ny_omtale.asp" name="frmEntry">
<select name="entrytitle" onchange="document.frmEntry.Biografi.value=this.id">
 <option value="">Artist/Band</option>
 <option id="Alice Cooper" value="570">Alice Cooper</option>
 <option id="Eloy" value="575">Eloy</option>
 <option id="Iron Maiden" value="572">Iron Maiden</option>
 <option id="King Crimson" value="574">King Crimson</option>
 <option id="Led Zeppelin" value="573">Led Zeppelin</option>
</select>
<input type="text" name="Biografi" value="" />
</form>

 

Edit: Også prøvde med "document.getElementById('op' + this.value).innerHTML" etter value= i javascriptet

Endret av neitakk
Lenke til kommentar
Testet ut nå, men det skjer ingenting.

 

Her er koden:

 

<form method="post" action="ny_omtale.asp" name="frmEntry">
<select name="entrytitle" onchange="document.frmEntry.Biografi.value=this.id">
 <option value="">Artist/Band</option>
 <option id="Alice Cooper" value="570">Alice Cooper</option>
 <option id="Eloy" value="575">Eloy</option>
 <option id="Iron Maiden" value="572">Iron Maiden</option>
 <option id="King Crimson" value="574">King Crimson</option>
 <option id="Led Zeppelin" value="573">Led Zeppelin</option>
</select>
<input type="text" name="Biografi" value="" />
</form>

 

Edit: Også prøvde med "document.getElementById('op' + this.value).innerHTML" etter value= i javascriptet

8400652[/snapback]

 

Du blander :)

 

Bruk:

"document.getElementById('op' + this.value).innerHTML" etter value= i javascriptet

og

<option id="op573" value="573">Led Zeppelin</option>

(f.eks >>id="op{$artistnummer}" value="{$artistnummer}"<<

 

Det er ID som må være noe jeg kan hente fra select - dvs option-value, som jeg slår sammen med "op" for å finne option-id som jeg bruker for å finne teksten :yes:

 

ALLE mine koder funker HAHAHA :devil: HA-HA-HA-HA!! :devil:

 

(hvis noen nå finner den .text det ble snakket om tidligere, kommer jeg til å ha gjort mye unødvendig arbeid....)

Endret av Kagee
Lenke til kommentar

Takker for tålmodighet. Er det noe jeg overser, eller er denne koden slik du foreslår?

 

Returnerer bare "null":

 

<form method="post" action="ny_omtale.asp" name="frmEntry">
<select name="entrytitle" onchange="document.frmEntry.Biografi.value=document.getElementById('op' + this.value)">
<option value="">Artist/Band</option>
<option id="opAlice Cooper" value="570">Alice Cooper</option>
<option id="opEloy" value="575">Eloy</option>
<option id="opIron Maiden" value="572">Iron Maiden</option>
<option id="opKing Crimson" value="574">King Crimson</option>
<option id="opLed Zeppelin" value="573">Led Zeppelin</option>
<option id="opPink Floyd" value="571">Pink Floyd</option>
</select>

<input type="text" name="Biografi" value=""></form>

Endret av neitakk
Lenke til kommentar
<form method="post" action="ny_omtale.asp" name="frmEntry">
<select name="entrytitle" onchange="document.frmEntry.Biografi.value=document.getElementById('op' + this.value)">
<option value="">Artist/Band</option>
<option id="opKing Crimson" value="574">King Crimson</option>
<option id="opLed Zeppelin" value="573">Led Zeppelin</option>
</select>
</form>

8401389[/snapback]

 

La Tor's allmektige hammer slå deg i bakken - du nærmer deg :p

 

<form method="post" action="ny_omtale.asp" name="frmEntry">
<select name="entrytitle" onchange="document.frmEntry.Biografi.value=document.getElementById('op' + this.value).innerHTML">
<option value="">Artist/Band</option>
<option id="op574" value="574">King Crimson</option>
<option id="op573" value="573">Led Zeppelin</option>
</select>
</form>

 

(Lurte på om jeg skulle vente litt og se om du retta deg selv :innocent: )

 

PS: OPPDATERT KODE (la til .innerHTML)

Endret av Kagee
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...