Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blokowanie przycisku submit
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
romseb
Witam,

Tak jak pisałem wcześniej, zrobiłem walidację formularza przez javascript. Ładnie zaznacza kolorkami gdzie jest błąd. Chciałem również, żeby w przypadku gdy któreś pole nie zaliczy walidacji następowała blokada przycisku submit. W funkcji która koloruje pole (wywoływana na onchange) dopisałem po prostu odwołanie do pola submit w postaci document.getElementById('wyslij').disabled = false;

Jednak status przycisku submit się nie zmienia.

Co robię nie tak? Czuję, że to kwestia drobiazgu

Pozdrawiam

romseb
Niktoś
a może to ma być tak?
document.getElementById('wyslij').disabled = true;
romseb
Witam.

Było i true. Nic się nie zmieniło, nie działa.

Czy w ogóle robił ktoś tak, że blokuje się submit w momencie któreś z pól jest niepoprawne?

Przypomniam że zmianę wartości pola disabled dopisałem do kolorowania pól w przypadku wystąpienia błędu..

Będę wdzięczny za dalszą pomoc

romseb
kamil4u
Przygotuj demo. Wszystko powinno działać, więc błąd pewnie jest gdzieś indziej: https://developer.mozilla.org/en/XUL/Attribute/disabled
celbarowicz
  1. <script type="text/javascript" >
  2. var stan;
  3.  
  4. function w(){ stan=0;
  5. //ustawiłem stan=1 czyli błąd w walidacji, walidację dopracuj samodzielnie.//zmieniaj stan.
  6. stan=1 ;
  7. if(stan===0){ document.getElementById('su1').disabled = false; }
  8. else { document.getElementById("su1").disabled = true; }
  9. }
  10.  
  11. function pisz(){
  12. alert("edek");
  13. }
  14.  
  15.  
  16. <input type="text" name="nap1" id="nap1" onClick="w();">
  17. <input type="text" name="nap2" id="nap2" onClick="w();">
  18. <input type="submit" name="su1" id="su1" onClick="pisz()">
  19.  
  20. </form>
  21. </body>
  22. </html>
  23.  
  24.  
  25.  
romseb
[JAVASCRIPT] pobierz, plaintext
  1. function isValidMacAddress(macAdd)
  2. {
  3. var RegExPattern = /^[0-9A-F-]+$/;
  4.  
  5. if (!(macAdd.match(RegExPattern)) || macAdd.length != 17)
  6. {
  7. document.getElementById("mac").style.background="#FF0000";
  8. document.getElementById('wyslij').disabled = true;
  9. }
  10. else
  11. {
  12. document.getElementById("mac").style.color="#009900";
  13. document.getElementById("mac").style.background="#E0E0E0";
  14. document.getElementById('wyslij').disabled = false;
  15. }
  16. }
  17. function isValidSocket(SckNum)
  18. {
  19. var RegExPattern = /^[0-9]{1,1}-[0-9]{3,3}$/;
  20.  
  21. if (!(SckNum.match(RegExPattern)) || SckNum.length != 5)
  22. {
  23. document.getElementById("gniazdko").style.background="#FF0000";
  24. document.getElementById('wyslij').disabled = true;
  25. }
  26. else
  27. {
  28. document.getElementById("gniazdko").style.color="#009900";
  29. document.getElementById("gniazdko").style.background="#E0E0E0";
  30. document.getElementById('wyslij').disabled = false;
  31. }
  32. }
  33.  
  34. [/codebox]
  35.  
[JAVASCRIPT] pobierz, plaintext


Rzućcie proszę okiem na ten kod.

Dzięki
romseb
celbarowicz
Rezygnujesz ze swoich funkcji , następnie przez document.getElementById pobierasz: macAdd oraz...
To co było ciałem Twoich funkcji umieszczasz w ciele funkcji w(){ ....} W każdym Twoim starym fragmencie umieszczasz w odpowiednich miejscach stan=1.
To by było na tyle jak mawiał Profesor Stanisławski.
romseb
Witam

Słuchajcie Państwo, ja już się troszkę zgubiłem. Przerobiłem swój skrypt, tak, że jedna funkcja sprawdza wyrażenie i zwraca true albo false, a druga funkcja przeprowadza odpowiedne operacje na wyglądzie zależnie od wyniku. Zmiany są zgodne z sugestią powyżej. W kodzie html wywołanie javascript odbywa sie na onchange. Wywołana jest funkcja validate. Zresztą rzućcie proszę okiem, czy to co poniżej ma prawo działać. Na codzień zajmuje się php, js zajmuję się tylko wtedy, gdy wiem, że dobrze nadaje się do moch celów. Tak czy inaczej, teraz nie działa nic

Będę wdzięczny za pomoc

romseb

CODE

[JAVASCRIPT] pobierz, plaintext
  1. function isValidMacAddress(macAdd)
  2. {
  3. var RegExPattern = /^[0-9A-F-]+$/;
  4.  
  5. if (!(macAdd.match(RegExPattern)) || macAdd.length != 17)
  6. {
  7. //document.getElementById("mac").style.background="#FF0000";
  8. //document.getElementById('wyslij').disabled = true;
  9. return false;
  10. }
  11. else
  12. {
  13. //document.getElementById("mac").style.color="#009900";
  14. //document.getElementById("mac").style.background="#E0E0E0";
  15. //document.getElementById('wyslij').disabled = false;
  16. return true;
  17. }
  18. }
  19. function isValidSocket(SckNum)
  20. {
  21. var RegExPattern = /^[0-9]{1,1}-[0-9]{3,3}$/;
  22.  
  23. if (!(SckNum.match(RegExPattern)) || SckNum.length != 5)
  24. {
  25. //document.getElementById("gniazdko").style.background="#FF0000";
  26. //document.getElementById('wyslij').disabled = true;
  27. return false;
  28. }
  29. else
  30. {
  31. //document.getElementById("gniazdko").style.color="#009900";
  32. //document.getElementById("gniazdko").style.background="#E0E0E0";
  33. //document.getElementById('wyslij').disabled = false;
  34. return true;
  35. }
  36. }
  37. function Validate()
  38. {
  39. var AcquiredMac = getElementById("mac").value;
  40. var AcquiredSck = getElementById("gniazdko").value;
  41.  
  42. if (isValidSocket(AcquiredSck)) && ((isValidMacAddress(AcquiredMac))
  43. {
  44. document.getElementById("gniazdko").style.color="#009900";
  45. document.getElementById("gniazdko").style.background="#E0E0E0";
  46. document.getElementById('wyslij').disabled = false;
  47. document.getElementById("mac").style.color="#009900";
  48. document.getElementById("mac").style.background="#E0E0E0";
  49.  
  50.  
  51. }
  52. else
  53. {
  54. document.getElementById("gniazdko").style.background="#FF0000";
  55. document.getElementById("mac").style.background="#FF0000";
  56. document.getElementById('wyslij').disabled = true;
  57. }
  58.  
  59. }
  60.  
[JAVASCRIPT] pobierz, plaintext






kamil4u
http://jsfiddle.net/CcNXG/ - zrób na tej podstawie. Jak Ci się nie uda to swój kod( z HTML ) też umieść na tej stronie to łatwiej będzie mi się edytować
celbarowicz
  1. <script type="text/javascript" >
  2. var stan; var RegExPattern = /^[0-9A-F-]+$/; var macAdd;
  3.  
  4. function w(){stan=0;
  5. // część 1
  6. macAdd=document.getElementById("mac").value;
  7.  
  8. if (!(macAdd.match(RegExPattern)) || macAdd.length != 17)
  9. {
  10. document.getElementById("mac").style.background="#FF0000";
  11.  
  12. stan=1;
  13. }
  14. else
  15. {
  16. document.getElementById("mac").style.color="#009900";
  17. document.getElementById("mac").style.background="#E0E0E0";
  18.  
  19. }
  20. // część 2
  21. //do samodzielnego wykonania
  22.  
  23. if(stan===0){ document.getElementById('su1').disabled = false; }
  24. else { document.getElementById("su1").disabled = true; }
  25. }
  26.  
  27. function pisz(){
  28. alert("edek");
  29. }
  30. <form>
  31. <input type="text" name="mac" id="mac" onkeyup="w();">
  32.  
  33. <input type="submit" name="su1" id="su1" onClick="pisz()">
  34.  
  35. </form>
  36. </body>
  37. </html>
  38.  
  39.  
  40.  

Zamień onclick na onkeyup
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.