Blad JavaScript w przegladarce IE

0

Witam serdecznie,

działa mi całe sprawdzanie w przeglądarkach Mozillla , Chrome :) :), ale w explorer cały czas mi wysyła pocztę. Nawet jak są nie poprawne dane wprowadzone. W innych przeglądarkach w momencie wprowadzenia nie poprawnych danych, zostaje zablokowane wysłanie wiadomości i pojawiają się komunikaty o błędach.
Szczerze to nie wiem dla czego tak się dzieje...

Mój kod przedstawia się w następujący sposób:
--- kod HTML (formularz ):

<?
   $wyslano = 0;
   include "zabezpieczenia.php";
?>
<form method="post" action="index.php?menu=12" onsubmit="return sprawdza()" onreset="reset()" >
 <table >
    <tr >
      <td> Temat:  </td>
      <td> <input type="text" name="temat" />                                      </td>
      <td> <label></label>  </td>
   </tr>
   <tr>
     <td> *Imię i nazwisko:</td>
     <td> <input type="text" name="imie" id="imie" onkeyup="sprawdzImie()"/>       </td>
     <td> <label id="imieKomunikat"></label> </td>
   </tr>
   <tr>
      <td> *Adres e-mail:</td>
      <td> <input type="text" name="email" id="email" onkeyup="sprawdzEmail()"/>   </td>
      <td> <label id="emailKomunikat"></label></td>
   </tr>
   <tr>
      <td> *Treść wiadomości:</td>
      <td> <textarea name="tresc" id="tresc" onkeyup="sprawdzTresc()"></textarea>  </td>
      <td> <label id="trescKomunikat"></label> </td>
   </tr> 
    <label id="message"></label>

   <tr>
      <td> <input type="submit" name="submit" value="Wyślij"/>  </td> 
      <td> <input type="reset" value="Wyczyść"/>                </td>
   </tr> 
   <tr>
      <td> * pola wymagane   </td>
   </tr> 
 </table>
</form>

-- kod wysyłający pocztę:

case '12': {
 ?><div id="Content">
<?

 $naglowki = "From: [email protected]" . PHP_EOL . "Reply-To: [email protected]" . PHP_EOL . "Content-type: text/html; charset=utf-8";
 $tresc_nadawca = "Wiadomość od nadawcy: " . $_POST['email'] . "Treść Wiadomośći " . $_POST['tresc'];

if (mail('[email protected]', $_POST['temat'], $tresc_nadawca, $naglowki)) {
        $wyslano = 1;
        echo 'Wiadomość została wysłana';
    } else {
        $wyslano = 0;
        echo 'Błąd ';
    }

?>
</div>
<?} break;
 } ?>

--- plik zabezpieczenia.php :

<script type="text/javascript">

var Imie = false;
var Email = false;
var Tresc = false;

function sprawdza(){
 sprawdzEmail(); sprawdzImie(); sprawdzTresc(); 
 var ok = Imie && Email && Tresc;

 if (ok){
    document.getElementById("message").innerHTML = "<span style=\"color:191038;\">Wiadomość jest w trakcie wysyłania.   </span>";
   return true;
 } else {
     document.getElementById("message").innerHTML = "<span style=\"color:red;\">Wypełnij wszystkie pola prawidłowymi danymi! </span>";
     return false;
 }
}
function reset(){
 Imie = false;
 Email = false;     
 Tresc = false;

}
function sprawdzImie(){
var    wyrazenie = /^[_a-zA-Z ]+$/;
var   imie = document.getElementById("imie").value;
var   czyImie = wyrazenie.test(imie);
if (czyImie) {
   document.getElementById("imieKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
   Imie = true;
 } else {
     document.getElementById("imieKomunikat").innerHTML = "<span style=\"color:red;\">Podaj prwaidłowo Swoje imie i nazwisko! </span>";
     Imie = false;
 }
}

function sprawdzEmail(){
  var wyrazenie2 = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
  var email = document.getElementById("email").value;
  var czyEmail = wyrazenie2.test(email);
  if (czyEmail) {
     document.getElementById("emailKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
     Email = true;
  } else {
       document.getElementById("emailKomunikat").innerHTML = "<span style=\"color:red;\">Podaj prawidłowy email!</span>";
       Email = false;
  }
}
function sprawdzTresc(){
  var wyrazenie3 = /^[ ]$/;
  var tresc = document.getElementById("tresc").value;      
  if (!tresc) {
     document.getElementById("trescKomunikat").innerHTML = "<span style=\"color:red;\">Treść jest pósta!</span>";
     Tresc = false;
  } else {
       document.getElementById("trescKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
       Tresc = true;
  }
}

 </script>

Mam jakiś błąd w składni, że to powoduje nie działanie skryptu w IE? Dokładnie nie działa funkcja sprawdza() Proszę uprzejmie o wskazówkę.

0

Błąd w linii:

if (ok){
    document.getElementById("message").innerHTML = "<span style=\"color:191038;\">Wiadomość jest w trakcie wysyłania.   </span>";

Usuń spację pomiędzy if a (ok) i zobacz co się stanie, ew. sprawdź przed if-em co tak naprawdę jest w ok (nie chce mi się dogłębnie tego analizować :) )

0

Sprawdzaj wszystko też po stronie serwera! Co będzie jak ktoś wyłączy JavaScript, albo otworzy stronę np. Firebugiem i wytnie event odpowiedzialny za sprawdzanie formularza?

0

Przecież wkleiłaś fragment kodu PHP w pierwszym poście:

<?
$wyslano = 0;
include "zabezpieczenia.php";
?>

To znaczy że serwer owy język obsługuje ^^ Sprawdzanie formularza po stronie JavaScriptu to fajna sprawa, ale zanim wywołasz mail() w kodzie wysyłającym pocztę, też wykonaj weryfikację czy wszystkie dane są prawidłowe. Jeśli tego nie zrobisz, formularz będzie można perfidnie hacknąć wyłączając sobie obsługę JSa, albo odpinając odpowiednie eventy :(

(Offtopic)
Komentarzy używa się do pisania mało znaczących dla tematu uwag, w przypadku kiedy chcesz powiedzieć w temacie coś ważnego, wyślij nowego posta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0