Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Checkbox
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
patigo
Mam pytanie:
Jak zrobić aby w jakimś formularzu przy zaznaczeniu "czekboxa" pokazać jakiś wynik .np mam formularz, klikam na "czekboxa" i pokazuje mi się rozwinięty formularz z większą ilością możliwości.

Pozdrawiam i z góry dziękuję za odpowiedzi.
nospor
Najpierw ukryj coś, a potem to pokaż smile.gif
uzyj
object.style.display="none" - ukrywanie
object.style.display="" - pokazanie
patigo
Ale jak tego użyć??

mam <input type="checkbox" name="c_tr" >
i chcem aby po zaznaczeniu załadować dodatkowe opcje w formularzu a po odznaczeniu wrócić do pierwotnej wersji.
gdzie mam wpisać
Cytat
object.style.display="none" - ukrywanie
object.style.display="" - pokazanie
??Prosszę o pomoc bo się całkowicie gubię...

Może inaczej powiem....Chciałbym aby kliknięcie pola CheckBox wywoływało automatycznie zdarzenie takie jak bym kliknął jednocześnie przycisk "submit"
nospor
Możesz od razu zaladować potrzebne ci dane do formularza, a po wcisnieciu checkoxa je pokazac.

dodatkowe przykladowe dane:
  1. <input type="text" id="id1" style="display:none" value="test" />


funkcja do pokazania tego inputa:
  1. function show()
  2. {
  3. obj=document.getElementById('id1');
  4. obj.style.display="";
  5. }


Klieknięcie na checkbox:
  1. <input type="checkbox" onclick="show()" />


Tak by to w skrócie wyglądało.
trzeba by jeszcze dorobić chowanie po ponownym kliknięciu, ale to moglbyś w ramach praktyki sam zrobic
patigo
Nie działa:(
Nie wiem co jest grane ale wyświetla mi błąd ze jakiś obiekt nie jest zainicjowany...

A nie da się tego zrobić jakoś za pomocą php??Myślałem może żeby np checkbox był takim buttonem po naciśnięciu wywoływał np stronę index.php ze zmienną która po odczytaniu strony powodowałaby wyświetlenie jakiegoś innego formularza??
nospor
Pewnie krzyczy w funkcji show, ze nie ma obj. Pewnie input'a nie masz od id1 lub jest dla niego nie widoczny.Jakbyś rzucił kodem i błędem byłoby milo.

Można oczywiście w php:
  1. <input type="checkbox" onclick="location.href='tu twoj plik z parameterm'" />


edit:
lub:
  1. <input type="checkbox" onclick="submit()" />

jesli chceckbox jest w formularzu. oczywiscie dobrze by bylo pewnie jakąs zmienna ustawic w formularzu, aby w submit skrypt wiedzial o co chodzi
patigo
Kod
<center>
<script language="JavaScript">function show()
{
obj=document.getElementById('id1');
obj.style.display="";
}
</script>
<table border="0">
<form name="index.php" method="post">
<tr>
    <td colspan="2"><input type="text" name="zapytanie" id="idl" name="zapytanie" style="display:none" value="" /></td>
    <td><input type="submit" name="action" value="Szukaj" /></td>
</tr>

<tr>
    <td colspan="3">Zaawansowane
    <input type="checkbox" onClick="show()" />
</td>
</tr>
</form>
</table>


Tak wygląda mój kod
nospor
tak jak myslalem. masz input o id=idl a odwolujesz sie do id1. to jest lekka róznica
patigo
Faktycznie ślepy już jestem:)....

Teraz działa tylko mały problem z akcją odwrotną... napisałem coś takiego:
Kod
<center>
<script language="JavaScript">function show()
{
obj=document.getElementById('idl');
obj.style.display="";
}
function show1()
{
obj=document.getElementById('idl');
obj.style.display="none";
}
</script>
<table border="0">
<form name="index.php" method="post">
<tr>
    <td colspan="2"><input type="text" name="zapytanie" id="idl" name="zapytanie" style="display:none" value="" size="40"/></td>
    <td><input type="submit" name="action" value="Wyślij" /></td>
</tr>

<tr>
    <td colspan="3">
    <input type="checkbox" onClick="show()" onBlur="show1()" />
</td>
</tr>


i teraz wykonuje się akcja odwrotna ale nie tak jak bym chciał, tzn. wraca do pozycji pierwotnej jak klikam gdziekolwiek.
nospor
lekka modyfikacja funkcji show. Gdy jest zaznaczony checkbox to show. gdy odznaczony to hide. myslalem ze sam do tego dojdziesz.
  1. function show()
  2. {
  3. obj=document.getElementById('idl');
  4. objCheck=document.getElementById('id twojego checkbox');
  5. if (objCheck.checked)
  6. obj.style.display="";
  7. else
  8. obj.style.display="none";
  9. }

z tym warunkiem to moze byc na adwrót. sprawdz
patigo
Dziękuję ci bardzo.Podobnie myślałem jeżeli chodzi o pętlę ale kompletnie nie znam skladni JavaScript zatem "rzeźbienie" na sucho by mnie tylko zmęczyło:).
mam nadzieję że będę miał kiedyś czas aby uczyć się JS.

Pozdrawiam
nospor
psze bardzo. cieszę się że pomogłem biggrin.gif
patigo
Jakaś porażka znowu mi nie chodzi...Myślałem że już ok ale...
jak mam rozumieć tą linijkę:
Cytat
objCheck=document.getElementById('id twojego checkbox');

zwłaszcza to co jest w nawiasie i co powinienem wstawić do
Kod
<input type="checkbox"  onClick="show()">

Znowu mam info że oczekiwano na obiekt.Proszę pomóż ostatni raz:)
nospor
id twojego checkboxa to id jakie nadasz dla checbox czyli
checkbox:
  1. <input type="checkbox" id="idC" onClick="show()">


obj:
  1. objCheck=document.getElementById('idC');
patigo
Tak też zrobiłem no i.... Właśnie nie działa myślałem że może coś innego ma tam być. oto mój kod:
Kod
<script language="JavaScript">
function show()
{
obj=document.getElementById('idl');
objCheck=document.getElementById('idBox');
if (objCheck.checked)
obj.style.display="";
else
obj.style.display="none";
}
</script>
<table border="0">
<form name="index.php" method="post">
<tr>
   <td colspan="2"><input type="text" name="zapytanie" id="idl" style="display:none" value="" size="40"/></td>
   <td><input type="submit" name="action" value="Szukaj" /></td>
</tr>

<tr>
   <td colspan="3">Sortuj wg&nbsp;<select name="opcja"><option value="data">daty
   <option value="alfa">alfabetycznie</select>&nbsp;zaawansowane
   <input type="checkbox" id="idBox" onClick="show()"  />
</td>
</tr>
nospor
Ale co nie działa? Jakiś komunikat o błędach

edit: u mnie działa. wklepalem ten kod co dales i dziala
patigo
Na pasku przeglądarki że "oczekiwano na obiekt" nie wiem co jest
nospor
u mnie działa. wklepalem ten kod co dales i dziala
patigo
No w morde jeża....To już przesada za długo siedzę na kompie, za bardzo jestem przemęczony....czas zrobić sobie kilkudniową przerwę chyba:) WSZYSTKO OK biggrin.gif Moja wina faktycznie wszystko działa, miałem 2 skrypty o podobnych nazwach i przez przypadek odpalałem ten "zepsuty". Przepraszam za fatygę i jeszcze raz WIELKIE DZIKI
hwao
php pocz -> po stronie przegladarki (js)
patigo
hmm?questionmark.gif hwao, co masz na myśli??
Plastek
Witam, zmodyfikowałem do swoich potrzeb przytoczony wcześniej skrypt, ale nie mogę osiągnąc oczekwanego rezultatu, a mianowicie chodzi mi o to, żeby wykorzystując pola "radio" móc wybierac rozwijac dodatkowe pola "select" w zależności od wybranego pola "radio" W tej chwili działa to tak że po przełączeniu pól "radio" nie znikają pola "select" wcześniej już wybrane oraz przy pierwszym uruchamianiu skryptu nie pojawia mi się pole "select" wybrane przez pole radio checked='checked'

Proszę o pomoc, dzięki
Kod
<script language="JavaScript">
function show()
{
obj=document.getElementById('idRad');
objCheck=document.getElementById('idRadBox');
if (objCheck.checked)
obj.style.display="";
else
obj.style.display="none";
}

function show1()
{
obj=document.getElementById('idPio');
objCheck=document.getElementById('idPioBox');
if (objCheck.checked)
obj.style.display="";
else
obj.style.display="none";
}

function show2()
{
obj=document.getElementById('idTusz');
objCheck=document.getElementById('idTuszBox');
if (objCheck.checked)
obj.style.display="";
else
obj.style.display="none";
}
</script>

  1. <table border="0">
  2. <tr>
  3. <td colspan="1">REJON&nbsp;<select name="opcja" id="idRad" style="display:none" >
  4. <option value="111">Radom
  5. <option value="222">Kozienice
  6. <option value="333">Przysucha</select>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td colspan="1">REJON&nbsp;<select name="opcja" id="idPio" style="display:none" >
  11. <option value="444">Piotrków
  12. <option value="555">Opoczno
  13. <option value="666">Zelów</select>
  14. </td>
  15. <tr>
  16. <td colspan="1">REJON&nbsp;<select name="opcja" id="idTusz" style="display:none" >
  17. <option value="777">Tuszyn
  18. <option value="888">Łódź
  19. <option value="999">Bełchatów</select>
  20. </td>
  21. <tr>
  22.  
  23. <td colspan="3">&nbsp;Centrala
  24. <input type="radio" id="idRadBox" name='centrala' checked='checked' value='Radom' onClick="show()" />
  25. <input type="radio" id="idPioBox" name='centrala' value='Piotrkow' onClick="show1()" />
  26. <input type="radio" id="idTuszBox" name='centrala' value='Tuszyn' onClick="show2()" />
  27. </td>
  28. </tr>

Prosze uzywac bbcode!!!
poprawiam
---
nospor
nospor
  1. <table border="0">
  2. <tr>
  3. <td colspan="1">REJON&nbsp;<select name="opcja" id="idRad" style="display:" >
  4. <option value="111">Radom
  5. <option value="222">Kozienice
  6. <option value="333">Przysucha</select>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td colspan="1">REJON&nbsp;<select name="opcja" id="idPio" style="display:none" >
  11. <option value="444">Piotrków
  12. <option value="555">Opoczno
  13. <option value="666">Zelów</select>
  14. </td>
  15. <tr>
  16. <td colspan="1">REJON&nbsp;<select name="opcja" id="idTusz" style="display:none" >
  17. <option value="777">Tuszyn
  18. <option value="888">Łódź
  19. <option value="999">Bełchatów</select>
  20. </td>
  21. <tr>
  22.  
  23. <td colspan="3">&nbsp;Centrala
  24. <input type="radio" id="idRadBox" name='centrala' checked='checked' value='Radom' onClick="show();show1();show2();" />
  25. <input type="radio" id="idPioBox" name='centrala' value='Piotrkow' onClick="show1();show();show2();" />
  26. <input type="radio" id="idTuszBox" name='centrala' value='Tuszyn' onClick="show2();show();show1();" />
  27. </td>
  28. </tr>


a przy starcie strony musisz pokazac selecta (usunac display:none) krorego radio jest zaznaczone
Plastek
Super, bardzo Ci dziękuje, właśnie o to mi chodziło guitar.gif Mam jednak problem z wysyłaniem danych z formularza nie ważne które "radio" i "selecta" wybiore zawsze dane są wysyłane z ostatniej funkcji show2() nie wiem co powinienem z tym zrobić
nospor
dla selectow nadaj inne name, wtedy w poscie bedziesz mial wartosci dla tych name. Radio zostaw bez zmian. w poscie pod nazwą centrala bedziesz mial rozna wartosc w zaleznosci jakie radio wybrales
Plastek
Jest szansa zrobić tak, aby wysyłane dane były tylko z jednego selecta ? zależy mi na tym ponieważ w dalszej części skryptu analizowane i wysylane do bazy sa jeszcze inne dane w taki sposób, że wysyłanie danych w tym przypadku ze wzystkich selectów może prowadzić do niepoprawnych wpisów w bazie
nospor
Kod
<script language="JavaScript">
function show()
{
obj=document.getElementById('idRad');
objCheck=document.getElementById('idRadBox');
if (objCheck.checked)
{
obj.style.display="";
obj.disabled=false;
}
else
{
obj.style.display="none";
obj.disabled=true;
}
}

function show1()
{
obj=document.getElementById('idPio');
objCheck=document.getElementById('idPioBox');
if (objCheck.checked)
{
obj.style.display="";
obj.disabled=false;
}
else
{
obj.style.display="none";
obj.disabled=true;
}
}

function show2()
{
obj=document.getElementById('idTusz');
objCheck=document.getElementById('idTuszBox');
if (objCheck.checked)
{
obj.style.display="";
obj.disabled=false;
}
else
{
obj.style.display="none";
obj.disabled=true;
}
}
</script>


  1. <table border="0">
  2. <tr>
  3. <td colspan="1">REJON&nbsp;<select name="opcja" id="idRad" style="display:none" >
  4. <option value="111">Radom
  5. <option value="222">Kozienice
  6. <option value="333">Przysucha</select>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td colspan="1">REJON&nbsp;<select name="opcja" id="idPio" style="display:none" >
  11. <option value="444">Piotrków
  12. <option value="555">Opoczno
  13. <option value="666">Zelów</select>
  14. </td>
  15. <tr>
  16. <td colspan="1">REJON&nbsp;<select name="opcja" id="idTusz" style="display:none" >
  17. <option value="777">Tuszyn
  18. <option value="888">Łódź
  19. <option value="999">Bełchatów</select>
  20. </td>
  21. <tr>
  22.  
  23. <td colspan="3">&nbsp;Centrala
  24. <input type="radio" id="idRadBox" name='centrala' checked='checked' value='Radom' onClick="show();show1();show2();" />
  25. <input type="radio" id="idPioBox" name='centrala' value='Piotrkow' onClick="show1();show();show2();" />
  26. <input type="radio" id="idTuszBox" name='centrala' value='Tuszyn' onClick="show2();show();show1();" />
  27. </td>
  28. </tr>


i na koniec po zaladowaniu wykonaj taki skrypcik:
Kod
<script language="JavaScript">
show();
show1();
show2();
</script>
Plastek
Teraz super mi to działa smile.gif Dzięki exclamation.gif!! Mam jeszcze pytanko , czy mozna pobierać pola wyboru selecta np. z tabeli bazy danych questionmark.gif
nospor
uzyj wyszukiwarki, wrrrr
np. tu
http://forum.php.pl/index.php?showtopic=37252
escaflowne
Jeżeli chcesz ukrywać/pokazywać większą ilość elementów, zamknij je w <div></div>, np.
  1. <div id="obszar1">
  2. <input type="text" name="pole1"><br>
  3. <input type="text" name="pole2"><br>
  4. </div>
nospor
@escaflowne ale w tym przypadku to nie ma sensu bo dla każdego radio jest tylko po jednym selectie. A nie będzie przeciez robil po kilka kombinacji divów w selectie by zamykac obszary dla roznych radio
Dandelion
a jezeli zamiast

  1. <input type="checkbox" id="idBox" onClick="show()" />


chcialbym uzyc cos w stylu

  1. <input type="image"  id="idBox" onClick="show()">Szukaj</BUTTON>


to jak musze zmodyfikowac kod js


I jak zrobic aby po kliknieciu w button pokazalo mi sie np 2 nowe pola zamiast jednego jak w poprzednich przykladach


chce zastosowac <input type="image" ... bo moge tam ustawic tlo obrazkowe. Po kliknieciu na button pod spodem ma wyskakiwac jedno pole textarea oraz pole <input type="submit"

probowalem narazie dojsc do tego zeby wyskakiwalo same pole textarea jednka nie udalo mi sie

  1. <script language="JavaScript">
  2. function show()
  3. {
  4. obj=document.getElementById('idl');
  5. objCheck=document.getElementById('idBox');
  6. if (objCheck.checked)
  7. obj.style.display="";
  8. else
  9. obj.style.display="none";
  10. }
  11.  
  12. <div id="logo">1</div>
  13.  
  14. <div id="menu">
  15.      <form method="POST" style="style.css" class="formularz">
  16.             <input type="image" VALUE="pokaz" src="images/podstawowa2.gif" id="idBox" onClick="show()">
  17.             <input type="image" VALUE="szukaj" src="images/podstawowa2.gif">
  18.            
  19.      </form>
  20.      
  21.  
  22. <div id="menu2">
  23.      <form action="dodaj" method="POST" style="style.css" class="formularz2">
  24.  
  25. <div id="menu3">
  26.            <p></p>
  27.            <textarea name="dodaj" cols="50" rows="10" id="idl" style="display:none"></textarea>
  28. </div>
  29.            <input type="image" VALUE="wyslij" src="images/dodaj.gif">
  30.      </form>
  31.  
  32. </div>      
  33. </div>


wydaje mi sie ze problem lezy w tej lini

if (objCheck.checked)

obiekt jest buttonem wiec nie moze byc zaznaczony jak np radio czy checkbox bardzo mozliwe ze sie myle bo to pierwsze moje starcie z java scriptem winksmiley.jpg


Rozwiazanie

poszperalem troche w google i znalazlem opis ukrywania calego diva

Kod
<script language="javascript">
var state = 'none';

function showhide(layer_ref) {

if (state == 'block') {
state = 'none';
}
else {
state = 'block';
}
if (document.all) { //IS IE 4 or 5 (or 6 beta)
eval( "document.all." + layer_ref + ".style.display = state");
}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].display = state;
}
if (document.getElementById &&!document.all) {
hza = document.getElementById(layer_ref);
hza.style.display = state;
}
}
</script>


  1. <input type="button" VALUE="dodaj" onclick="showhide('menu2');" value="show" class="przycisk">
button pokazujacy i ukrywajacy diva

konkretny div ktory chcemy ukryc

  1. <div id="menu2" style="display: none;">
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.