Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html/js] Select, value, disabled
Forum PHP.pl > Forum > Po stronie przeglądarki
Pride
Witam.
Szukam sposobu jak przy wybraniu czegos w [select] <input> byl disabled='disabled'
Przykładowo:
  1. <select name='taklubnie'>
  2. <option value='yes'>yes</option>
  3. <option value='no'>no</option>

Jeżeli wybiore z tego np. YES to:
  1. <input type='text' size='30' name='nazwa' disabled='disabled' />

jeżeli NO to:
  1. <input type='text' size='30' name='nazwa' />


Wiem, ze cos takiego na 99% istnieje bo gdzies juz to stosowalem (tak mi sie przynajmniej wydaje). Jednak nie moge tego znaleźc na dysku ani w internecie tongue.gif
Z gory THX za pomoc.
ARJ
Kod
function disable(){
document.getElementById("nazwa").setAttribute("disabled","disabled");
}

wywołanie:
  1. <option value='yes' onclick="disable();">yes</option>


funkcję możesz rozbudować o if`a który będzie sprawdzał czy input jest zablokowany czy nie i odpowiednio go blokował lub odblokowywał.
Istalacar
O ile dobrze pamiętam trzeba użyć albo onClick, albo onFocus i odnieść to do funkcji która aktywuje i zdezaktywuje pole
Cienki1980
A ja w przypadku selecta radziłbym wykorzystać onChange() zamiast onClick ... dlaczego ? A no bo selecta można obsługiwać z klawiatury ( wystarczy nadać focus i używać strzałek ) - a tego onClick już chyba nie wyłapie ...
Pride
No mam już jakieś podpowiedzi to.... google do boju tongue.gif Bo jak juz mowilem (a moze i nie mówiłem...) to JS nie znam kompletnie haha.gif Nawet tego warunku nie wiem jak napisac tongue.gif ale poszukam ;P Moze cos znajde ^.^

EDIT

No coś napisałem ale niestety nie działa....:
  1. <script type="text/javascript">
  2. function disable(){
  3. if(document.getElementById('nazwa').value==yes)document.getElementById('text1').disabled=false;
  4. else document.getElementById('text1').disabled=true;
  5. }
  6. <select name='nazwa'>
  7. <option>-- wybierz z listy --</option>
  8. <option onchange="disable()" value='yes'>Wymagaj</option>
  9. <option value='no'>Nie wymagaj</option>
  10. <input disabled name="text1" type="text">

Nie wiem już jak to napisac tongue.gif Jakies pomysły? snitch.gif
Pozdrawiam
Istalacar
Zamiast name użyj id:)

<input disabled name="text1" type="text">
Zamień na:
<input disabled id="text1" type="text">
Pride
Cytat(Istalacar @ 19.09.2007, 15:05:51 ) *
Zamiast name użyj id:)

<input disabled name="text1" type="text">
Zamień na:
<input disabled id="text1" type="text">

Też nie działa... >.>
qqrq
OnChange powinno być w select'ie, nie w option:

  1. <select name='nazwa' onchange="disable()">
  2. <option>-- wybierz z listy --</option>
  3. <option value='yes'>Wymagaj</option>
  4. <option value='no'>Nie wymagaj</option>
Pride
Cytat(qqrq @ 19.09.2007, 16:10:44 ) *
OnChange powinno być w select'ie, nie w option:

  1. <select name='nazwa' onchange="disable()">
  2. <option>-- wybierz z listy --</option>
  3. <option value='yes'>Wymagaj</option>
  4. <option value='no'>Nie wymagaj</option>

także nie pomogło.
Nie mam już pomysłów na to... Jest ktoś tutaj kto umiał by mi to jakoś poprawnie napisać? Bo sam nie dam chyba rady.
qqrq
A no tak, jeszcze jedno:

  1. <script type="text/javascript">
  2. function disable(){
  3. if(document.getElementById('nazwa').options[document.getElementById('nazwa').selectedIndex] =='yes')document.getElementById('text1').disabled=false;
  4. else document.getElementById('text1').disabled=true;
  5. }
Istalacar
I jeszcze raz, nie zwróciłem uwagi, w select też trzeba "name" na "id" zmienić.
Pride
Z tego co zrozumiałem, ma to wyglądac tak:
  1. <head>
  2. <script type="text/javascript">
  3. function disable(){
  4. if(document.getElementById('nazwa').options[document.getElementById('nazwa').selectedIndex] =='yes')document.getElementById('text1').disabled=false;
  5. else document.getElementById('text1').disabled=true;
  6. }
  7. </script>
  8. </head>
  9. <body>
  10. <select id='nazwa' onchange="disable()">
  11. <option>-- wybierz z listy --</option>
  12. <option value='yes'>Wymagaj</option>
  13. <option value='no'>Nie wymagaj</option>
  14. </select>
  15. <input disabled id="text1" type="text">
  16. </body>
  17. </html>

Jednak jak zawsze... nie działa sadsmiley02.gif sciana.gif
Istalacar
  1. <head>
  2. <script type="text/javascript">
  3. function disable(){
  4. if(document.getElementById('nazwa').options[document.getElementById('nazwa').selectedIndex].value =='yes')document.getElementById('text1').disabled=false;
  5. else document.getElementById('text1').disabled=true;
  6. }
  7. </script>
  8. </head>
  9. <body>
  10. <select id='nazwa' onchange="disable()">
  11. <option>-- wybierz z listy --</option>
  12. <option value='yes'>Wymagaj</option>
  13. <option value='no'>Nie wymagaj</option>
  14. </select>
  15. <input disabled id="text1" type="text">
  16. </body>
  17. </html>


Być może to value będzie tu kluczowe:)

Edit:
właśnie sprawdziłem ten skrypt i działa:)
W ramach sugestii możesz jeszcze podczas blokowania wyczyścić to pole co będzie w else wyglądało tak:
  1. else
  2. {
  3. document.getElementById('text1').value='';
  4. document.getElementById('text1').disabled=true;
  5. }
Pride
  1. function disable(){
  2. document.getElementById('text1').disabled=document.getElementById('nazwa').value!='yes'
  3. }

i jest good ^.^
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.