Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] odblokowywanie pola input
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
skowron-line
  1. <head>
  2.  
  3. <script language="JavaScript">
  4.  
  5. function pokapoka() {
  6. var a = document.getElementById('form');
  7. if(a.elements[0].value != ''){
  8. a.elements[1].disabled = false;
  9. }else if(a.elements[0].value == ''){
  10. alert("aby uzyskac dostep do nastepnego pola nalezy wypelnic to pole");
  11. }
  12. }
  13.  
  14. </script>
  15.  
  16. </head>
  17. <body>
  18. <form method="post" id="form">
  19. login::<input type="text" name="a" onkeydown="pokapoka();"><br />
  20. haslo::<input type="text" name="b" disabled="true">
  21.  
  22. </form>
  23. </body>
  24. </html>


napisalem powyzszy skrypt ktory ma zablokowane pole haslo i dopiero po wypelnieniu pola login pole haslo bedzie dostepne niestety nie dziala on poprawnie poniewaz jak zaczne wpisywac to wyskakuje alert a jak wpisze i skasuje to pole i tak sie odblokuje.

co powinnienem dodac i jakimi funkcjami sie zainteresowac zeby to rozwiazac
misiek172
może zamień onkeydown na onChange ?
skowron-line
Cytat(misiek172 @ 26.02.2007, 17:02:53 ) *
może zamień onkeydown na onChange ?


guitar.gif trafna uwaga ale jeszcze pozostaje jak zrobic zeby jak wpisze i skasuje to zeby pole znow sie zablokowalo
misiek172
daj:
onBlur='if(this.value=='')this.disabled = true'
Joy-machine
1. zmień na onkeyup
2. rozumiem że to ma wymusić wpisanie loginu, ale to i tak nie przeszkodzi we wprowadzeniu złego loginu, a pusty/brak loginu to także zły login więc ta funkcja to IMO zbędny bajer.
skowron-line
Cytat(Joy-machine @ 26.02.2007, 17:16:24 ) *
2. rozumiem że to ma wymusić wpisanie loginu, ale to i tak nie przeszkodzi we wprowadzeniu złego loginu, a pusty/brak loginu to także zły login więc ta funkcja to IMO zbędny bajer.


no ja o tym wiem ze to nie przeszkodzi we wprowadzeniu loginu chodzi mi tylko o to zeby najpierw wpisac logina a dopiero pozniej haslo.

p.s tak wogole to sie ucze js i to nie jest mi do niczego nie potrzebne jak tylko do nauki


edit:
Kod
onBlur='if(this.value=='')this.disabled = true'

gdzie?? zamiast czego??
misiek172
<input type="text" name="a" onChange ="pokapoka();" onBlur='if(this.value=='')this.disabled = true'>

czyli po wyjściu z inputa sprawdza czy nie jest pusty, jesli jest to wyłancza inputa
skowron-line
@misiek172 nie dziala ale wstawilem po alercie
a.elements[1].disabled = true;
i dziala jak chcialem
gekon
  1. haslo::<input type="text" name="b" disabled="true">

W X/HTMLu atrybut disabled (tak jak checked i readonly) nie przyjmuje wartości true|false, natomiast bardzo chętnie przyjmie swoją nazwę: disabled="disabled".

Jeżeli chcesz już koniecznie sprawdzać czy login został wpisany masz dwie możliwości:
a) kiedy klawisz zostawie puszczony (onkeyup),
b) kiedy użytkownik kliknie przycisk 'submit, czyli przestanie się interesować polem z loginem (onblur).

Z tego wynika, że mniej więcej tak to powinno wyglądać:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <script type="text/javascript">
  5. function pokapoka(elem) {
  6. passwordInput = document.getElementById("pass");
  7. if(elem.value == ''){
  8. alert("aby uzyskac dostep do nastepnego pola nalezy wypelnic to pole");
  9. passwordInput.disabled = true;
  10. } else {
  11. passwordInput.disabled = false;
  12. }
  13. return true;
  14. }
  15. </script>
  16. </head>
  17. <form id="form" action="#">
  18. <label for="login">Login</label><input type="text" name="login" id="login" onblur="return pokapoka(this)" />
  19. <label for="pass">Hasło</label><input type="password" name="pass" id="pass" disabled="disabled" />
  20. </form>
  21. </body>
  22. </html>
skowron-line
@gekon czyli moj skrypt byl napisany blednie?? mimo iz działa tak jak ja sobie to wymyslilem

edit:::

i jeszcze jedno dlaczego powinno sie pisac

<lable for="">
gekon
Błędnie to złe słowo, powiedzmy niechlujnie smile.gif Chociaż daleki jestem do stwierzdzenia, że jedynym słusznym zdażeniem powinno być onblur. A label to takie ułatwienie. W normalnym programie, przeważnie możesz kliknąć w nazwę/opis obok inputa czy checkboxa a on i tak się zaznaczy, tę funkcję w X/HTMLu spełnia label właśnie. Pozatym czytniki stron dla niewidomych mają ułatwioną pracę. A z innej beczki, możnaby użyć nieinwazyjnego JS, czyli przechwytywania zdażeń.
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.