Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzanie zawartości pola input
kuba_bardo
post 1.11.2013, 14:47:58
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.11.2013

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


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
Go to the top of the page
+Quote Post
kamil4u
post 1.11.2013, 14:55:38
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


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>


Ten post edytował kamil4u 1.11.2013, 14:55:51


--------------------
Go to the top of the page
+Quote Post
kuba_bardo
post 1.11.2013, 20:00:07
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.11.2013

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


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.

Ten post edytował kuba_bardo 1.11.2013, 15:18:50
Go to the top of the page
+Quote Post
kamil4u
post 1.11.2013, 21:44:48
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


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 )


--------------------
Go to the top of the page
+Quote Post
kuba_bardo
post 2.11.2013, 00:55:23
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.11.2013

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


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.
Go to the top of the page
+Quote Post
com
post 2.11.2013, 01:09:29
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nie wrzucaj tego bezpośrednio w if wrzuć do zmiennej wyrażenie a potem dopiero z zmienna porównuj wink.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 22:35