Autor Zpráva
Ricky4852
Profil *
Zdravím, neviem iste či je to v dobrej sekcii, nakoľko niesom si istý či ide práve o javaskript, no potreboval by som niečo takéto.

Mám web, v nej mám nejaké option menu. Keď vyberiem prvú položku, ukáže sa mi jeden texbox. Keď vyberiem druhú položku, ukážu sa mi dve texboxy, Keď tretiu položku tak tri. Všetko to má byť ale bez toho, aby som klikol na nejaký submit button, proste aby sa mi to hneď objavilo keď zmením option menu.

Ja som to už hľadal aj na rôznych stránkach, ale všade je to isté - cez post, a to ja nechcem :(

Ďakujem za všetky odpovede
Dtx
Profil *
Záleží na konečném počtu těch textboxů. Pokud znáš konečný počet, dejme tomu 3, tak si předem na stránce vytvoř ty tři textboxy, všem jim ale dej display:none

Nějak takto:
<textarea id="tbox1" name="tbox1" class="dn"></textarea>
<textarea id="tbox2" name="tbox2" class="dn"></textarea>
<textarea id="tbox3" name="tbox3" class="dn"></textarea>
//class dn obsahuje display:none, což zajistí nezobrazování tohoto prvku



Každá položka (option) menu bude mít na onclick eventu pověšenou funkci např showTextbox(číslo_určující_počet_textboxů_k_zobrazení).
Takže například
<ul>
  <li onclick="showTextbox(1)">Ukaž 1 textbox</li>
  <li onclick="showTextbox(2)">Ukaž 2 textboxy</li>
  <li onclick="showTextbox(3)">Ukaž 3 textboxy</li>
</ul>


funkce showTextbox() pak může vypadat nějak takto:
function showTextbox(n)
{
   for(i = 1; i < 4; i++) {
      document.getElementById("tbox" + i).className = 'dn';
      /* shova vsechny textboxy. Pro pripad, ze ze tri aktualne zobrazenych chceme zobrazit treba uz jen  jeden*/

   }
   for(i = 1; i < n+1; i++) {
      document.getElementById("tbox" + i).className = 'db';
      /* tato funkce projede vsechny textboxy od 1 az do poctu n a priradi jim classu "db", ktera musi byt definovana a obsahovat display:block*/
   }
   
}


Určitě ale existuje elegantnější řešení.. nicméně toto je taky funkční a možná ti bude stačit :)
panther
Profil
Dtx:
Určitě ale existuje elegantnější řešení
moc jsem to nezkoumal, nicméně, když už něco zneviditelňovat, tak scriptem, ne pomocí CSS - s vypnutým JS neuvidíš nic, správně bys měl vidět všechno (bez JS nemáš ta data jak odkrýt).
Dtx
Profil *
panther: a jak to scriptem zneviditelním? Tohle není pruda otázka, ale opravdu to nevím. Řeším to odjakživa tak, že pomocí JS přiřadím nějakou z(ne)viditelňovací classu, případně inline styl.
I když teď mě napadá, že máš na mysli, že prvky by samy o sobě neměly mít hned classu .dn, ale měla by jim být přiřazena až pomoci JS, aby v případě nezapnutého javascriptu byli vidět od začátku. S tím souhlasim.
panther
Profil
Dtx:
I když teď mě napadá, že máš na mysli, že prvky by samy o sobě neměly mít hned classu .dn, ale měla by jim být přiřazena až pomoci JS
ano, přesně tak jsem to myslel. Skrývání/odkrývání za pomoci JS je dobrá věc na spoustě webů, ale bez JS se musí ukázat vše, ne aby půlka obsahu chyběla. U menu to platí dvojnásob.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0