Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie zawartości pola input
Forum PHP.pl > Forum > Po stronie przeglądarki
kuba_bardo
Witam,

Mam następujący problem. Piszę system w PHP, i nie wiem jak mam sprawdzać zawartość inputa.
Generalnie jest tak: mam sobie formularz, inputa, i 3 div'y.
  1. <form action="index.php" method="POST">
  2. <input type="password" class="input" id="password" />
  3. <div class="pass-default" id="pass1"></div>
  4. <div class="pass-default" id="pass2"></div>
  5. <div class="pass-default" id="pass3"></div>
  6. </form>

Te div'y (pass1-pass3) mają ten sam rozmiar, a default'owo czarne tło i szare obramowanie.
Ja potrzebuję skrypt w javie, który w czasie rzeczywistym zmieni ich style zależnie:
-Jeśli pole input nie jest puste zmienia się wygląd pola "pass1" z default'owego czarnego tła na czerwone, i bordowe obramowanie.
-Jeśli pole input zawiera więcej niż 8 znaków, pole "pass2" z default'owego zmienia się na zielone tło, i ciemno zielone obramowanie.
-I w końcu jeśli pole input zawiera duże i małe litery, cyfry oraz ma więcej niż 8 znaków to styl div'a "pass3" zmienia się na niebieskie tło i ciemno niebieskie obramowanie.

Szukałem już w googlach, ale niczego co znalazłem nie byłem w stanie zastosować sad.gif
Z góry dzięki smile.gif
kamil4u
Ale czego oczekujesz? Porad, gotowca, jak zacząć?

Zacznij od analizy:
Kod
<input type="password" id="test"><button onclick="alert( document.getElementById('test').value)">pokaz</button>
kuba_bardo
Może faktycznie trochę głupio sformułowałem temat. Nie no, na tyle znam jave, żeby wykonać taki przykład. Nie wiem jak napisać pętle if. W sensie co zdefiniować w warunku tych 3 pętli, żeby działały tak jak bym chciał. I sprawdzały zawartość tego inputa w czasie rzeczywistym. :/
Czego oczekuję? Chciałbym, aby ktoś nakierował mnie, w sensie pomógł sformułować warunki i dał kilka wskazówek.

Teraz, tak patrzę po raz kolejny na ten przykład @kamil4u i podsunąłeś mi pomysł smile.gif. Napisałem taki kod:

  1. <head>
  2. <script type="text/javascript">
  3. function a(){
  4. if(test.value.length >= 1){
  5. pass1.style.backgroundColor = "rgb(" +171 + "," +31 + ","+28+ ")";
  6. }
  7. if(test.value.length >= 8){
  8. pass2.style.backgroundColor = "rgb(" +0 + "," +100 + ","+0+ ")";
  9. }
  10. if(test.value.length >= 8){
  11. pass3.style.backgroundColor = "rgb(" +0 + "," +18 + ","+69+ ")";
  12. }
  13. }
  14. </script><style type="text/css">
  15. div.pass-default{
  16. background-color:black;
  17. width:100px;
  18. height:30px;
  19. display:block;
  20. float:left;
  21. margin-left:10px;
  22. border:1px solid gray;
  23. border-radius:10px;
  24. }
  25. </style>
  26. </head><body>
  27. <input type="password" id="test">
  28. <button onclick="a();">pokaz</button>
  29. <div class="pass-default" id="pass1"></div>
  30. <div class="pass-default" id="pass2"></div>
  31. <div class="pass-default" id="pass3"></div>
  32. </body>
  33. </html>


Nie wiem tylko jak zdefiniować 3 warunek if(), czyli jak sprawdzić czy zawartość value zahacza się chociaż pojedynczymi znakami jednocześnie w 3 przedziały: (a-z) (A-Z) (0-9).
Drugim problemem jest to, że divy zmieniają styl dopiero po kliknięciu na button, a nie w czasie rzeczywistym.

Ma ktoś jakiś pomysł? Z góry dzięki smile.gif.
kamil4u
Cytat
znakami jednocześnie w 3 przedziały: (a-z) (A-Z) (0-9)

Rozwiązanie, które znajdziesz w Google pod hasłem: wyrażenia regularne

Cytat
Drugim problemem jest to, że divy zmieniają styl dopiero po kliknięciu na button, a nie w czasie rzeczywistym.

Zastosuj inne zdarzenie: onchange, onkeydown, onkeypress, onkeyup
Kod
<input type="password" id="test" onkeydown="a();">



Pamiętaj, że ktoś może usunąć hasło( zmniejszyć ilość znaków np. z 9 do 7 ), wtedy musisz zmienić div-a z powrotem( if-else )
kuba_bardo
Wielkie dzięki !
Wszystko działa tak jak powinno. Załączam poprawiony kod, może komuś, kto będzie miał podobny problem się przyda smile.gif.

  1. <head>
  2. <script type="text/javascript">
  3. function a(){
  4. if(test.value.length >= 1){
  5. pass1.style.backgroundColor = "rgb(" +171 + "," +31 + ","+28+ ")";
  6. }else{
  7. pass1.style.backgroundColor = "rgb(" +0 + "," +0 + ","+0+ ")";
  8. }
  9. if(test.value.length >= 6){
  10. pass2.style.backgroundColor = "rgb(" +0 + "," +100 + ","+0+ ")";
  11. }else{
  12. pass2.style.backgroundColor = "rgb(" +0 + "," +0 + ","+0+ ")";
  13. }
  14. if(test.value.length >= 8 && new RegExp("[0-9A-Z]").exec(document.getElementById('test').value)){
  15. pass3.style.backgroundColor = "rgb(" +0 + "," +18 + ","+69+ ")";
  16. }else{
  17. pass3.style.backgroundColor = "rgb(" +0 + "," +0 + ","+0+ ")";
  18. }
  19. }
  20. </script><style type="text/css">
  21. div.pass-default{
  22. background-color:black;
  23. width:100px;
  24. height:30px;
  25. display:block;
  26. float:left;
  27. margin-left:10px;
  28. border:1px solid gray;
  29. border-radius:10px;
  30. }
  31. </style>
  32. </head><body>
  33. <input type="password" onkeyup="a()" id="test">
  34. <div class="pass-default" id="pass1"></div>
  35. <div class="pass-default" id="pass2"></div>
  36. <div class="pass-default" id="pass3"></div>
  37. </body>
  38. </html>


Jeszcze raz wielkie dzięki biggrin.gif
Temat do zamknięcia.
com
nie wrzucaj tego bezpośrednio w if wrzuć do zmiennej wyrażenie a potem dopiero z zmienna porównuj wink.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.