Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Pomoc przy zabezpieczeniu formularza JavaScriptem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Zawi
Witam,
zwracam się z ogromną prośbą o pomoc - na zaliczenie musze napisać formularz który bedzie zabezpieczony przez JS i będzie zapisywał dane w bazie danych dzięki PHP. O ile z php nie będzie większych problemów to nie mogę sobie poradzić z zabezpieczeniem pól w JS.

Formularz można zobaczyć tutaj:
http://szkola.zawi.pl/projektTech/zamowienie.html
Plik ze skryptami JS tutaj, są tam wszystkie funkcje które wydają mi sie niezbędne, nie mogę znaleźć w nich błędu:
http://szkola.zawi.pl/projektTech/skrypty.js

Jakie zabezpieczenia mają być zastosowane:
Żadne pole z niebieskiego formularza Twoje dane, nie może być puste
Pole imie, nazwisko to tylko litery
Pole ulica, numer domu to tylko litery i cyfry
Pole kod pocztowy musi mieć postać 00-000 (na to nie mam gotowej funkcji w skrypty.js)
Pole telefon tylko liczby
Pole e-mail musi być poprawnym adresem (jest do tego funkcja sprawdzająca)

Jeżeli zaznaczony został produkt (w zielonym formularzu) to pole ilość sztuk które się pokazuje nie może być puste i w ilości sztuk mogą być tylko liczby.

W wysyłce nie może zostać wybrana pierwsza opcja (ta "-- wybierz sposób wysyłki --").

Wszystkie funkcje wydaje mi się są dobrze napisane, tylko chyba nie potrafie tego sensownie połączyć.

Z góry dziękuje z apomoc.

Kod pliku zamowienie.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  3. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2" />
  4. <meta http-equiv="content-language" content="pl" />
  5. <title>Składanie zamówień na produkty</title>
  6.  
  7.  
  8. <script type="text/javascript" src="skrypty.js"></script>
  9. <link rel="stylesheet" type="text/css" href="style.css" />
  10. </head>
  11. <h2>Złóż swoje zamówienie</h2>
  12.  
  13. <form method="post" action="" onsubmit="return isOk(this)">
  14. <h3>Twoje dane</h3>
  15. <table class="dane" cellspacing="0">
  16. <tr>
  17. <td>Imię </td><td><input type="text" name="imie" size="30"/></td>
  18. </tr>
  19. <tr>
  20. <td>Nazwisko </td><td><input type="text" name="nazwisko" size="30" /></td>
  21. </tr>
  22. <tr>
  23. <td><input type="text" name="ulica" size="30" /></td><td><input type="text" name="nr_domu" size="10" /></td>
  24. </tr>
  25. <tr>
  26. <td>&uArr; Ulica</td><td>&uArr; Nr domu</td>
  27. </tr>
  28. <tr>
  29. <td><input type="text" name="miasto" size="30" /></td><td><input type="text" name="kod_pocztowy" size="7" /></td>
  30. </tr>
  31. <tr>
  32. <td>&uArr; Miasto</td><td>&uArr; Kod pocztowy (w formacie: 00-000)</td>
  33. </tr>
  34. <tr>
  35. <td>Telefon </td><td><input type="text" name="telefon" /></td>
  36. </tr>
  37. <tr>
  38. <td>E-mail </td><td><input type="text" name="email" /></td>
  39. </tr>
  40.  
  41.  
  42. <!-- ####### PRODUKTY ######### -->
  43. <h3>Zamawiane produkty</h3>
  44. <table class="produkty" cellspacing="0">
  45. <tr>
  46. <td>Produkt </td>
  47. <td>Ilość sztuk</td>
  48. </tr>
  49. <tr>
  50. <td><input name="produkty" value="produkt1" type="checkbox" onClick="PokazRadio1(this.form,this,'produkt1')" />Produkt1</td>
  51. <td>
  52. <span id="produkt1" style="display:none;">
  53. <input name="ilosc_produkt1" type="text" /> sztuk
  54. </span>
  55. </td>
  56. </tr>
  57. <tr>
  58. <td><input name="produkty" value="produkt2" type="checkbox" onClick="PokazRadio1(this.form,this,'produkt2')" />Produkt2</td>
  59. <td>
  60. <span id="produkt2" style="display:none;">
  61. <input name="ilosc_produkt2" type="text" /> sztuk
  62. </span>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td><input name="produkty" value="produkt3" type="checkbox" onClick="PokazRadio1(this.form,this,'produkt3')" />Produkt3</td>
  67. <td>
  68. <span id="produkt3" style="display:none;">
  69. <input name="ilosc_produkt3" type="text" /> sztuk
  70. </span>
  71. </td>
  72. </tr>
  73. <tr>
  74. <td><input name="produkty" value="produkt4" type="checkbox" onClick="PokazRadio1(this.form,this,'produkt4')" />Produkt4</td>
  75. <td>
  76. <span id="produkt4" style="display:none;">
  77. <input name="ilosc_produkt4" type="text" /> sztuk
  78. </span>
  79. </td>
  80. </tr>
  81. <tr>
  82. <td><input name="produkty" value="produkt5" type="checkbox" onClick="PokazRadio1(this.form,this,'produkt5')" />Produkt5</td>
  83. <td>
  84. <span id="produkt5" style="display:none;">
  85. <input name="ilosc_produkt5" type="text" /> sztuk
  86. </span>
  87. </td>
  88. </tr>
  89.  
  90. <div>
  91. <p>Wybierz sposób wysyłki:</p>
  92. <select name="sposob_wysylki" >
  93. <option value="null">-- wybierz sposób wysyłki --</option>
  94. <option value="wysylka1">Poczta Polska, Pobranie</option>
  95. <option value="wysylka2">Kurier, Pobranie</option>
  96. <option value="wysylka3">Poczta Polska, Wpłata na konto</option>
  97. <option value="wysylka4">Kurier, Wpłata na konto</option>
  98. </div>
  99.  
  100. <p><input type="submit" value="Wyślij zamówienie" /></p>
  101. </form>
  102. </body>
  103. </html>


Kod pliku skrypty.js

Kod
// JavaScript Document

//FUNKCJA POKAZUJE POLE ILOŚĆ ZAMAWIANYCH SZTUK DANEGO PRODUKTU
function PokazRadio1(frm,polej,idsp)
{
        if(polej.checked)
        {
        document.getElementById(idsp).style.display=""
        }
        else
        {
        document.getElementById(idsp).style.display="none"
        }
}

// SPRAWDZACZE POPRAWNOŚCI DANYCH OSOBY### START ###

function isOk(f)
{
    if(
       isEmpty(f.imie,"imię") &&
       isEmpty(f.nazwisko,"nazwisko") &&
       isEmpty(f.ulica,"ulica") &&
       isEmpty(f.nr_domu,"nr_domu") &&
       isEmpty(f.miasto,"miasto") &&
       isEmpty(f.kod_pocztowy,"kod pocztowy") &&
       isEmpty(f.telefon,"telefon") &&
       isEmpty(f.email,"adres e-mail")
       )
    return true;
    else
    return false;
}






// sprawdza, czy podana wartość jest pusta, lub zawiera tylko białe znaki
function isEmpty(val,pole)
{
    if (val.match(/^s+$/) || val == "")
    {
        alert ("Błąd! Pole: "+pole+" nie może zostać puste");
        val.focus();
        return false;
        
    }
    else
    {
        return true;
    }    
}

// sprawdza, czy podana wartosc jest liczbą
function isNumber(val,pole)
{
    if (isNaN(val))
    {      
        alert ("Błąd! W Polu "+pole+" możesz wpisać tylko liczby");
        val.focus();
        return false;
    }
    else
    {
        
        return true;
    }    
}

// sprawdza, czy wszystkie znaki są literami
function isAlphabetic(val,pole)
{
    if (val.match(/^[a-zA-Z]+$/))
    {
        return true;
    }
    else
    {
        alert ("Błąd! W polu: "+pole+" możesz wpisać tylko litery");
        val.focus();
        return false;
    }    
}

// sprawdza, czy przesłane dane zawierają tylko litery i cyfry
function isAlphaNumeric(val,pole)
{
    if (val.match(/^[a-zA-Z0-9]+$/))
    {
        return true;
    }
    else
    {
        alert ("Błąd! W polu "+pole+" możesz wpisać tylko liczby i litery");
        val.focus();
        return false;
    }    
}

function isEmailAddress(val)
{
    if (val.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
    {
        return true;
    }
    else
    {
        print ("Błąd! Podany przez Ciebie e-mail jest niepoprawny");
        val.focus();
        return false;
    }    
}
skowron-line
FF mowi:
Kod
Error: val.match is not a function
Source File: http://szkola.zawi.pl/projektTech/skrypty.js
Line: 43
!*!
Wybaczcie że odgrzewam, ale jak takim sposobem jak napisał Zawi, można sprawdzić wszystkie pola formularza od razu?
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.