Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][JavaScript] Pokaż DIV jeśli checkbox jest zaznaczony + sesja
ixtab
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.09.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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ę?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Utwórz cookie po zaznaczeniu, a potem sprawdzaj czy istnieje.
Go to the top of the page
+Quote Post
bastard13
post
Post #3





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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)">
Go to the top of the page
+Quote Post
ixtab
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.09.2010

Ostrzeżenie: (0%)
-----


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;">...
Go to the top of the page
+Quote Post
bastard13
post
Post #5





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


brak ci apostrofów:
  1. onclick="showDiv(this,'choosemail')"
Go to the top of the page
+Quote Post
ixtab
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.09.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 17:23