Butterfisch: Formular per Javascript auswerten und verschicken

Hallo,

ich versuche ein Formular per Javascript zu überprüfen und dann zu verschicken. Auf Macintosh unter Firefox funktioniert alles, aber alle anderen Browser und Plattformen versagen.
Jemand ne Idee woran es liegen kann?

Script im header:

<!-- FORMULAR -->
<script type="text/javascript">
function refreshForm() {
   setTimeout(function(){
   $("#myform").show();$('#done').hide();
   $("input").each(function() {$(this).val('');});
   $("textarea").each(function() {$(this).val('');});
   $('#submit').val('senden');
   }, 6000);
}

function validEmail(email) {  

var strReg = "^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$";
  var regex = new RegExp(strReg);
   return(regex.test(email));
}

function validate\_form(){  

var go_sendmail = true;
   $(".required").each(function (){
   if ($(this).hasClass('email')){
   if (!validEmail($(this).val())){$(this).css("color","red");$(this).val("Bitte eine gültige Mail Adresse eingeben");
go_sendmail = false;
}
   }
   else {
   if (($(this).val() == '') || ($(this).val() == 'Bitte eine gültige Eingabe machen')) {
   $(this).css("color","red");$(this).val("Bitte eine gültige Eingabe machen");
   go_sendmail = false;
   } else {
   $(this).css("border-color","#006ab3");
   };
   };  
   });
   if(go_sendmail){sendmail();};
   }
  
   function sendmail() {

var vorname = $('input[name=vorname]');
   var nachname = $('input[name=nachname]');
   var email = $('input[name=email]');
   var nachricht = $('textarea[name=nachricht]');
if (document.myform.fragen.checked == true) { var check01= $(fragen).val("Bitte zusenden"); } else { var check01= $(fragen).val("Kein Interesse"); };
if (document.myform.unternehmensprofil.checked == true) { var check02= $(unternehmensprofil).val("Bitte zusenden"); } else { var check02= $(unternehmensprofil).val("Kein Interesse"); };
if (document.myform.beraterprofile.checked == true) { var check03= $(beraterprofile).val("Bitte zusenden"); } else { var check03= $(beraterprofile).val("Kein Interesse"); };
  
var data = 'vorname=' + vorname.val() + '&nachname=' + nachname.val()  + '&email=' + email.val() + '&nachricht=' +  nachricht.val() + '&fragen=' +  check01.val() + '&unternehmensprofil=' +  check02.val() + '&beraterprofile=' +  check03.val();

//$('#myform').fadeOut(2000);

$.ajax({
url: "senddata.php",
type: "POST",
data: data,
success: function (reqCode) {
$('#myform').fadeOut('slow');
$('#done').fadeIn('slow');
}
});
// refreshForm();
return false;
};

</script>  

Formular:
<form name="myform" method="post" action="senddata.php" id="myform" onSubmit="return false" class="clearfix">
            <label for="vorname">Vorname*</label><input onFocus="if (this.value == 'Bitte eine gültige Eingabe machen') this.value = '';this.style.color='#000000';" class="required" type="text" name="vorname" id="vorname" />
            <div style=" clear:both;"></div>
            <label for="nachname">Nachname*</label><input onFocus="if (this.value == 'Bitte eine gültige Eingabe machen') this.value = '';this.style.color='#000000';" class="required" type="text" name="nachname" id="nachname" />
            <div style=" clear:both;"></div>
            <label for="email">E-Mail*</label><input onFocus="if (this.value == 'Bitte eine gültige Mail Adresse eingeben') this.value = '';this.style.color='#000000';" class="required email" type="text" name="email" id="email" />
            <div style=" clear:both;"></div>
        <label for="nachricht">Ihre Nachricht</label>
        <textarea onFocus="if (this.value == 'Bitte eine gültige Eingabe machen') this.value = '';this.style.color='#000000';" name="nachricht" id="nachricht"></textarea>
        <div style=" clear:both;"></div>
         <label for="fragen">Ich habe Interesse an folgendem Infomaterial: </label><br/><input type="checkbox" class="checkboxen" name="fragen" id="fragen" value="Bitte zusenden 1" /><p>Flyer 7 Fragen... (PDF): </p>
         <input type="checkbox" class="checkboxen" name="unternehmensprofil" id="unternehmensprofil" value="Bitte zusenden" /><p>Unternehmensprofil (PDF)</p>
         <input type="checkbox"class="checkboxen"  name="beraterprofile" id="beraterprofile" value="Bitte zusenden" /><p>Beraterprofile (PDF)</p>
            <div style=" clear:both;"></div>
        <label for="submit" class="submit"></label><input type="submit" name="submit" id="submit" value="senden" onClick="validate_form();"/>
        <small class="clear">Die mit einem * versehenen Felder sind Pflichtfelder.</small>
      </form>

Und hier das PHP:

<?php
if (isset($_POST)){

$empfaenger = 'meine mail@web.de';  

$betreff = "Kontaktanfrage";
    $nachricht_text = "Vorname: ".$_POST['vorname']. "\r\n";
    $nachricht_text .= "Name: ".$_POST['nachname']. "\r\n";
    $nachricht_text .= "E-Mail: ".$_POST['email']. "\r\n\r\n";
$nachricht_text .= "Nachricht: " . "\r\n" .$_POST['nachricht']. "\r\n\r\n";
$nachricht_text .= "Ich habe Interesse an folgendem Infomaterial: " . "\r\n";
$nachricht_text .= "Flyer 7 Fragen... (PDF): " .$_POST['fragen']. "\r\n";
$nachricht_text .= "Unternehmensprofil (PDF): " .$_POST['unternehmensprofil']. "\r\n";
$nachricht_text .= "Beraterprofile (PDF): " .$_POST['beraterprofile']. "\r\n";

$header = 'From:'.$_POST['vorname'].' '.$_POST['nachname'].'<'.$_POST['email'].'>' . "\r\n";
    $header .= 'Reply-To: '.$_POST['email']. "\r\n";
    $header .= 'X-Mailer: PHP/' . phpversion();

$text=utf8\_decode($nachricht\_text);  
$headertext=utf8\_decode($header);  

mail($empfaenger, $betreff, $text, $headertext);
}

?>

  1. Hallo,

    Auf Macintosh unter Firefox funktioniert alles, aber alle anderen Browser und Plattformen versagen.

    Extrem ausführliche Fehlerbeschreibung...

    Du hast also angefangen zu debuggen und hast die Fehlerstelle eingrenzen können. An welcher Stelle bricht dein Script ab / kommt eine Fehlermeldung?

    Das Javascript deaktiviert sein könnte oder jemand deine Javascript-Validierung umgehen könnte und du _zusätzlich_ eine serverseitige Validierung benötigst und deine Email-Validierung jede Menge gültige Emailadressen ausschließt ist dir bewußt?

    vg ichbinich

    BTW, Codeeinrückung macht alles wesentlich übersichtlicher...

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
    1. Hallo,

      zunächst einmal danke für Die schnelle Antwort und ja, Du hast Recht, ich hätte mehr dazu schreiben können.
      Also der Fehler scheint bei den Checkboxen zu liegen, alles andere funktioniert soweit. Ich bekomme leider keine Fehlermeldung, sondern es passsiert einfach nichts, wenn ich auf den senden-Button klicke.

      Ich glaube, der Fehler liegt in diesem Teil des Scriptes (scheinbar werden die Variablen nicht übergeben):

      function sendmail() {
        var vorname = $('input[name=vorname]');
        var nachname = $('input[name=nachname]');
        var email = $('input[name=email]');
        var nachricht = $('textarea[name=nachricht]');

      if (document.myform.fragen.checked == true) {
        var check01= $(fragen).val("Bitte zusenden");
      } else {
        var check01= $(fragen).val("Kein Interesse"); };

      if (document.myform.unternehmensprofil.checked == true)
        { var check02= $(unternehmensprofil).val("Bitte zusenden");
      } else {
        var check02= $(unternehmensprofil).val("Kein Interesse");
      };

      if (document.myform.beraterprofile.checked == true) {
        var check03= $(beraterprofile).val("Bitte zusenden");
      } else {
        var check03= $(beraterprofile).val("Kein Interesse");
      };

      var data = 'vorname=' + vorname.val() + '&nachname=' + nachname.val()  + '&email=' + email.val() + '&nachricht=' +  nachricht.val() + '&fragen=' +  check01.val() + '&unternehmensprofil=' +  check02.val() + '&beraterprofile=' +  check03.val();

      1. Hallo,

        function sendmail() {
          var vorname = $('input[name=vorname]');
          var nachname = $('input[name=nachname]');
          var email = $('input[name=email]');
          var nachricht = $('textarea[name=nachricht]');

        if (document.myform.fragen.checked == true) {
          var check01= $(fragen).val("Bitte zusenden");
        } else {
          var check01= $(fragen).val("Kein Interesse"); };

        Wo kommt die Variable fragen her und welchen Wert hat sie?

        if (document.myform.unternehmensprofil.checked == true)
          { var check02= $(unternehmensprofil).val("Bitte zusenden");
        } else {
          var check02= $(unternehmensprofil).val("Kein Interesse");
        };

        Wo kommt die Variable unternehmensprofil her und welchen Wert hat sie?

        if (document.myform.beraterprofile.checked == true) {
          var check03= $(beraterprofile).val("Bitte zusenden");
        } else {
          var check03= $(beraterprofile).val("Kein Interesse");
        };

        Wo kommt die Variable beraterprofile her und welchen Wert hat sie?

        Grüße,
        Mathias

        1. Hallo Matthias,

          ja, vielen Dank, das war der entscheidende Hinweis.
          Ich habe die Zeilen entsprechend geändert und es funktioniert jetzt:
          if (document.myform.fragen.checked == true) {
              var check01= $('input[name=fragen]').val("Bitte zusenden");
          } else {
              var check01= $('input[name=fragen]').val("Kein Interesse");
          };

          Jetzt funktioniert es.
          Danke noch einmal.

          Viele Grüße,
          Christian