Just nu i M3-nätverket
Gå till innehåll

Hur gör man för att trigga ett formulärelements status från ett annat element?


husan

Rekommendera Poster

Kan någon hjälpa mig med hur jag ska gå tillväga i följande fall:

 

Jag har ett formulär som inleds med två radioknappar. Om användaren väljer en av knapparna ska en efterföljande lista (som från början var inaktiverad) aktiveras så att det blir möjligt att göra val ur listan.

 

Alltså, kan jag aktivera en inaktiverad lista? Jag antar att jag någonstans måste sätta upp ett villkor för radioknappen...men hur?

 

Använder en jsp + javaböna för att samla in de val som gjorts i formuläret.

 

Tack på förhand!

 

Länk till kommentar
Dela på andra webbplatser

Anropa följande funktion:

<script type="text/javascript">
function cykelslang(blnVarde) {
document.getElementById("x").disabled=blnVarde;
}
</script>

Med följande radioknappar:

<input type="radio" name="o" onclick="cykelslang(true)">
<input type="radio" name="o" onclick="cykelslang(false)">

Din select-lista:

<select id="x" name="x" disabled="disabled">

 

Länk till kommentar
Dela på andra webbplatser

Nu är jag tillbaka igen med en ytterligare fråga. Har precis testat att lägga in kodexemplet du gav, men det verkar inte fungera eftersom listan som skulle aktiveras inte blir aktiverad... förvirrande.

 

Javascriptet förstår jag, det enda jag inte riktigt är med på är kodsnutten: disabled = "disabled"

i select-taggen. Jag inblillar mig att "disabled" borde bytas ut mot något funktionsanrop, men som sagt, jag har ingen vidare koll...

 

[inlägget ändrat 2007-01-19 09:14:55 av husan]

Länk till kommentar
Dela på andra webbplatser

Jag inblillar mig att "disabled" borde bytas ut mot något funktionsanrop,

Nä, disabled="disabled" är ett element-attribut och ingen css-stil (eller tja, det är ett attribut som implicit sätter en css-stil antar jag att man kan uttrycka det) och det har enbart ett möjligt värde i xhtml och det är just "disabled"

 

Scriptet i övrigt är det inget fel med, fungerar utmärkt. Förmodligen har du klippt och klistrat fel. Kontrollera att det verkligen klippts in exakt som det ser ut.

 

Länk till kommentar
Dela på andra webbplatser

Koden jag lagt in hittar jag inga som helst fel med.

 

Måste dock erkänna att jag inte förstår innebörden i disabled = "disabled". Jag förstår dock mycket väl att det inte kopplat till css....

 

Om du har tid och lust får du gärna förklara på vilket sätt onClick="cykelslang(true)" i taggen för radioknappen påverkar statusen på disabled i select-taggen.

 

Ändras "disabled" då anropet document.getElementById("x").disabled="..." körs?

 

[inlägget ändrat 2007-01-19 11:05:40 av husan]

[inlägget ändrat 2007-01-19 11:06:24 av husan]

Länk till kommentar
Dela på andra webbplatser

disabled = "disabled"
Det gör att listen inte är aktiv då man kommer in på sidan.

Den blir inte aktiv förrän man anropar funktionen cykelslang() med parametern false.

Då ändrar man värdet för elementet till att vara false, vilket innebär att det inte ska vara inaktivt längre.

Beroende vilket värde du skcikar med in i funktionsanropet, true elelr false, så ändrar du elementets värde.

"Bättre att fråga och verka dum,

än att tiga och förbli dum"

 

Länk till kommentar
Dela på andra webbplatser

Hehe, jag har nog samlat på mig en och annan poäng på "verka-dum-kontot" ;-).

 

Det fungerar fortfarande inte dock, men jag ska testa att skriva om det igen helt och hållet. Det beror väl säkert på nåt skrivfel i så fall och jag tycks ha blivit ordblind...

 

 

Edit: Jepp, så var det. Nu fungerar det. Tack!

 

[inlägget ändrat 2007-01-19 11:28:16 av husan]

Länk till kommentar
Dela på andra webbplatser

Om du har tid och lust får du gärna förklara på vilket sätt onClick="cykelslang(true)" i taggen för radioknappen påverkar statusen på disabled i select-taggen.

Ändras "disabled" då anropet document.getElementById("x").disabled="..." körs?

 

Det funktionen gör är att först hämta en referens till SELECT-elementet och därefter sätta stilen disabled till relevant värde.

 

I förra inlägget blandade jag i stressen ihop disabled och display. Disabled är ingen css-stil på något sätt. Men att sätta attributet disabled="disabled" är samma sak som att i javascript/dom använda element.disabled=false.

 

Jag vet inte om jag förklarar så bra nu. Du får ställa följdfrågor där jag är otydlig eller virrig =)

 

 

EDIT: Jaha, Micke hade redan svarat.

[inlägget ändrat 2007-01-19 11:40:58 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Kör vidare i tråden med flera frågor på samma tema:

 

1) Kan jag "vända på" det föregående scriptet så att jag istället för att aktivera ett deaktiverat element kan inaktivera ett aktiverat sådant? Skulle det exempelvis vara möjligt att använda sig av document.getElementById("x").enabled="y" istället?

 

2) Kan jag använda samma typ av metod också på checkboxar?

 

3) Går det på något sätt att genomföra samma funktion mha en lista(select), dvs att man väljer ett option och valet triggar så att en tidigare inaktiv komponent aktiveras?

 

?!?

 

Länk till kommentar
Dela på andra webbplatser

1) Nä, det är fortfarande attributet disabled som skall ändras, det är bara värdet du ger det som skall inverteras. cykelslang(true) skall alltså ändras till cykelslang(false) och omvänt. Dessutom plockar du bort disabled="disabled" i taggen om det skall vara synligt från start.

 

2) Ja, det går bra. Alla element som har attributet disabled kan du göra detta med.

 

3) Ja. Följande gör samma sak om option med värde 3 väljs

<select onchange="if (this.options[this.selectedIndex].value=='3') cykelslang(true);">

 

[inlägget ändrat 2007-01-19 15:16:09 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...