Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][HTML]checkbox - dwa zdarzenia onClic - problem
Forum PHP.pl > Forum > Przedszkole
kotek2185
Witam wszystkich, mam taki o to form:

  1. ZEC<input type="checkbox" name="zec" id="zec" value="1" onclick="this.form.elements['tar'].disabled = !this.checked, this.form.elements['wys'].disabled = this.form.elements['co'].disabled = this.form.elements['cw'].disabled = this.checked"><br><br>
  2.  
  3. Taryfa<select onchange="this.form.elements['wys'].disabled = this.form.elements['co'].disabled = this.form.elements['cw'].disabled = (this.value=='0'), this.form.elements['wys'].disabled=!(this.value=='1'),
  4. this.form.elements['co'].disabled = this.form.elements['cw'].disabled = !(this.value=='2')" name="tar" value="tar" disabled = "disabled">
  5.  
  6. <option value="0" selected = "selected">Wybierz</option>
  7. <option value="1">Taryfa A</option>
  8. <option value="2">Taryfa B</option>
  9.  
  10. </select>
  11. <br><br>
  12.  
  13.  
  14. WYS <input type="text" name="wys" disabled = "disabled"><br><br>
  15.  
  16. CO <input type="text" name="co" disabled = "disabled"><br><br>
  17.  
  18. CW <input type="text" name="cw" disabled = "disabled"><br><br>
  19.  
  20. </form>


i pytanie jak obsłużyć checkbox by gdy zaznaczony odkrywał tylko select, a gdy odznaczony to zakrywał i select i inputy (które odkrywaja się zależnie od optiona w select)?

bardzo proszę o jakieś sugestie?
bostaf
Ja bym po prostu zresetował cały formularz w momencie odhaczenia checkboxa. Czyli w Twoim checkboxie "zec", daj taki kod java script:

[JAVASCRIPT] pobierz, plaintext
  1. onclick="this.form.elements['tar'].disabled = !this.checked; if(!this.checked) this.form.reset();"
[JAVASCRIPT] pobierz, plaintext
kotek2185
a co jeżeli mam w tym formie jeszcze kilka pól, których nie chce resetować?
bostaf
Cytat(kotek2185 @ 17.05.2012, 11:37:35 ) *
a co jeżeli mam w tym formie jeszcze kilka pól, których nie chce resetować?

No to trzeba dla każdego zdefiniować zawartość i dostępność i umieścić wszystko w klauzuli if:
[JAVASCRIPT] pobierz, plaintext
  1. if(!this.checked) {
  2. this.form.elements['wys'].value ='';
  3. this.form.elements['wys'].disabled = true;
  4. this.form.elements['cw'].disabled = true;
  5. }
[JAVASCRIPT] pobierz, plaintext

No i używaj średników a nie przecinków do separowania bloków kodu.
No i jeśli tyle rzeczy dzieje się przy jednej akcji, to lepiej zdefiniować funkcję i się do niej odwoływać:
[JAVASCRIPT] pobierz, plaintext
  1. function klik_zec() {
  2. this.form.elements['tar'].disabled = !this.checked;
  3. if(!this.checked) {
  4. this.form.elements['wys'].value ='';
  5. this.form.elements['wys'].disabled = true;
  6. this.form.elements['cw'].disabled = true;
  7. }
  8. }
[JAVASCRIPT] pobierz, plaintext

  1. ZEC<input type="checkbox" name="zec" id="zec" value="1" onclick="klik_zec()">
kotek2185
dzieki wielkie:) pomogło pozdrawiam

temat do zamkniecia
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.