webForumDet fria alternativet

Dölj/visa div med radio-buttons

JavaScript

15 svar · 758 visningar · startad av Fireh

Medlem sedan jan. 2003173 inlägg
Frågan#1

Jag får inte riktigt till det med att dölja en div. Det första problemet är att <div id="typ0" style="display: none;"> inte gör den döljd från början. Problem två är att jag vill visa olika inmatningsfält beroende på om man valt företag eller privatperson, dessa vals görs med radio. Men bägge visas efter varandra hela tiden.

<tr>
  <td class='TPCell_A'>Typ</td>
  <td class='TPCell_B'>
    <input type="radio" name="Typ" tabindex="1" value="0" onclick='javascript:document.getElementById("typ0").style.display="block";document.getElementById("typ1").style.display="none";'> Företag<br/>
    <input type="radio" name="Typ" tabindex="2" value="1" onclick='javascript:document.getElementById("typ1").style.display="block";document.getElementById("typ0").style.display="none";'> Privatperson
  </td>
</tr>

<div id="typ0" style="display: none;">
<tr>
  <td class='TPCell_A'>Företag</td>
  <td class='TPCell_B'><input type="text" name="Foretag" size="50" tabindex="11"></td>
</tr>
<tr>
  <td class='TPCell_A'>Kontaktperson</td>
  <td class='TPCell_B'><input type="text" name="FName" size="22" tabindex="12"><input type="text" name="LName" size="22" tabindex="13"></td>
</tr>
</div>

<div id="typ1">
<tr>
  <td class='TPCell_A'>Namn</td>
  <td class='TPCell_B'><input type="text" name="FName" size="22" tabindex="21"><input type="text" name="LName" size="22" tabindex="22"></td>
</tr>
</div>

Någon som har huvudet på bättre plats än jag för tillfället?
Måste det finnas ett javascript med för att detta ska fungera?

Medlem sedan aug. 20039 340 inlägg
#2

Du ska inte ha javascript: i onclick. Bort me't.
javascript: är ett protokoll i likhet med http: https: och mailto: och ska därför bara användas i href-attribut.

Medlem sedan juni 20019 519 inlägg
#3

Sen bör du inte ha en div runt en tr (kan eller skall bara ha <table>, <thead>, <tfoot> eller <tbody> som parent).

Medlem sedan jan. 2003173 inlägg
#4

Ok, har tagit bort nu, men det fungerar ändå inte. Inget händer...

Jag har även testat med en annan funktion nu efter mitt inlägg, inte heller det ger någon effekt. Det får mig att tro att det är något fel nånstans som gör att jag inte kan dölja divar?

  <script type="text/javascript"> 
  function radioCheck(o) {
	if (o.value == "1") {
      document.getElementById("typ1").style.display = "block";
      document.getElementById("typ0").style.display = "none";
    } else {
      document.getElementById("typ0").style.display = "block";
      document.getElementById("typ1").style.display = "none";
    } 
  }
  </script>
<input type="radio" name="Typ" tabindex="1" value="0" onclick="radioCheck(0)"> Företag<br/>
<input type="radio" name="Typ" tabindex="2" value="1" onclick="radioCheck(1)"> Privatperson
Medlem sedan jan. 2003173 inlägg
#5

Hmmmm.... men om det nu är olika delar i en tabell som ska döljas/visas?

Medlem sedan juni 20019 519 inlägg
#6

Du kan ju sätta ett ID på tr (tableRow) och visa eller dölj hela raden.

Medlem sedan jan. 2003173 inlägg
#7

Det fungerade ju bra!

Tackar!

Medlem sedan aug. 20039 340 inlägg
#8

Fwlet nu är att du skriver o.value men skickar med en siffra. skriv antingen:

onclick="radioCheck(this);"

eller

if (o == "1"){ [kod] osv.
För övrigt, om du någon gång vill använda flera val kan du göra så här:[kod] <script type="text/javascript"> 
  function radioCheck(o) {
    for (var i=0; i<2; i++){
      if (i=o){
        document.getElementById("typ"+i).style.display = "block";
      }else{
        document.getElementById("typ"+i).style.display = "none";
      }
    }
  }
  </script>

2 byter du då ut mot rätt antal. Koden ovan funkar även med bara två element för övrigt.

Medlem sedan juni 20019 519 inlägg
#9

Sen display: block är kanske inte rätt display typ på en tr-element ;)

Medlem sedan jan. 2003173 inlägg
#10

Även radioCheck-funktionen fungerar efter modifieringarna. Kan dock inte ha två accepterade lösningar, så skriver det istället.

Fick lägga ett unikt id per tr bara, gäller båda lösningarna. Annars var det bara den första som ändrades.

Medlem sedan jan. 2003173 inlägg
#11

Det visade sig nu när jag testade att det inte alls fungerar så bra i FireFox. Alla fält hamnar lite här och där i sidled när man klickar på ett av alternativen. Det ser bra ut tills man klickar, även om man klickar på den förvalda...

Det känns som att FF inte hanterar att dölja det korrekt. Innehållet försvinner, men det ser ut som den behåller nå extrakolumner...

Så här ska det se ut och det gör det innan man klickar på "Privatkund" eller "Företagskund" i FireFox.

Så här blir det i FireFox när man klickat på Privatkund. I IE fungerar det bra.

Tips?

Medlem sedan juni 20019 519 inlägg
#12

voigtann1 skrev:

Sen display: block är kanske inte rätt display typ på en tr-element ;)

Har du ändrat det?

Medlem sedan jan. 2003173 inlägg
#13

Jag har testat med display: inline, men det blev om möjligt sämre i Firefox. Fungerade dock bra i IE. Finns det något mer?

Medlem sedan dec. 20025 483 inlägg
Medlem sedan jan. 2003173 inlägg
#15

Det fungerade ju bra i Firefox nu, men inte alls i IE (vilket det också står på sidan).
Så finns det något sätt att kombinera i bägge? :)

Medlem sedan jan. 2003173 inlägg
#16

Jag har byggt om allt så att jag döljer hela tabeller och visar med display: block istället för att dölja/visa tr-element. Inte lika kul, men det fungerar.

267 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)