Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript] Pokaż DIV jeśli checkbox jest zaznaczony + sesja
Forum PHP.pl > Forum > Przedszkole
ixtab
Witam. Mam problem ze skryptem pokazującym DIV po zaznaczeniu checkbox'a.
  1. function showMe(id) { // pokazuje i ukrywa input e-mail po kliknięciu na checkbox
  2. var obj = document.getElementById(id);
  3. if (obj.style.display=="none") {
  4. obj.style.display = "block";
  5. } else {
  6. obj.style.display = "none";
  7. }
  8. }

Wszystko jest ok. DIV pokazuje się po zaznaczeniu checkbox'a i znika po odznaczeniu. Działa to natomiast tylko do czasu kiedy w grę nie wchodzi walidacja formularza... Po wykonaniu walidacji i wyrzuceniu jakiegokolwiek błędu, sesja wczytuje dane do formularza (również status checkbox'ów). No i w ten oto sposób checbox'y są zaznaczone, a DIV'y... schowane. Dopiero po odznaczeniu checkbox'a pojawia się DIV zgodnie z akcją onclick dry.gif
Nie chciałbym rezygnować ani z chowania DIV'ów, ani z wczytywania statusu checkbox'ów, bo formularz jest dość obszerny i zachowanie porządku jest w tej sytuacji jest dla mnie bardzo ważne.
Jakieś pomysły na rozwiniętego DIV'a po nieprawidłowym przejściu przez walidację?
!*!
Utwórz cookie po zaznaczeniu, a potem sprawdzaj czy istnieje.
bastard13
Zakładam, że funkcję masz na onclick w checkboxie, więc dokładasz jeszcze jeden parametr i przekazujesz do funkcji obiekt checkbox:
  1. function showMe(my_check,id) { // pokazuje i ukrywa input e-mail po kliknięciu na checkbox
  2. var obj = document.getElementById(id);
  3. if (my_check.checked==true){
  4. obj.style.display = "block";
  5. } else {
  6. obj.style.display = "none";
  7. }
  8. }
  9. //a w html
  10. <input onclick="showMe(this,drugi_parametr)">
ixtab
Jestem zbyt zmęczony i czegoś nie widzę, albo to nie działa... Mógłbyś sprawdzić kod?
  1. function showDiv(mails,id) { // pokazuje i ukrywa input e-mail po kliknięciu na checkbox
  2. var obj = document.getElementById(id);
  3. if (mails.checked==true){
  4. obj.style.display = "block";
  5. } else {
  6. obj.style.display = "none";
  7. }
  8. }
HTML:
  1. <input name="mails" id="mails" class="checkbox" value="TAK" <?= $_SESSION['myForm']['mails'] == TAK ? 'checked' : '' ?> tabindex="6" type="checkbox" onclick="showDiv(this,choosemail)" /> bla bla bla</p>
  2. <div id="choosemail" style="margin-left:50px; display:none;">...
bastard13
brak ci apostrofów:
  1. onclick="showDiv(this,'choosemail')"
ixtab
Faktycznie... Już oślepłem na dzisiaj. Działa, ale nie tak jak chciałbym żeby działało... Po zwalidowaniu nadal DIV się chowa, aczkolwiek jest o tyle lepiej, że odznaczenie checkbox'a nie powoduje otwarcia DIV'a. Dopiero po ponownym zaznaczeniu DIV dostaje od skryptu instrukcje display:block. Nie dostaje jej jednak po ponownym wywołaniu formularza z użyciem sesji i otrzymaniu od niej statusu checkboxa = checked sadsmiley02.gif
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.