0

この問題は解決したと思っていましたが、まだ問題が発生しています。

送信をクリックするたびに、フォームが送信されます。JavaScript がフォームを正しく検証していると思っていましたが、電子メール フィールドに何でも入力できるため機能しません。それでも処理されます。アラートは引き続き機能します。PHP と JavaScript を使用したいだけで、AJAX などは使用しません。これが私のコードです:

<?php

$to = 'email@email.com';
$subject = 'Voice4Autism Inquiry';

$FirstName = $_POST['fname'];
$LastName = $_POST['lname'];
$eMail = $_POST['email'];

$message = <<<EMAIL

Hi!<br /><br/>

My name is $FirstName $LastName.  I am interseted in your newsletter from Voice4Autism.  Please add $eMail to your listserve.<br /><br />

Thank you,<br />
$FirstName $LastName

EMAIL;

$header = "From: $eMail\r\n";
$header = "Content-type: text/html\r\n";

if($_POST){
    mail($to, $subject, $message, $header);
}
?>

ジャバスクリプト

<script type="text/javascript">
function checkforblank() {
    var errormessage = "";

    if (document.getElementById('fname').value ==""){
        errormessage += "enter your first name \n";
    }
    if (document.getElementById('lname').value ==""){
        errormessage += "enter your last name \n";
    }
    if (document.getElementById('email').value ==""){
        errormessage += "enter your email \n";
    }
    if (document.getElementById('confirmEmail').value ==""){
        errormessage += "confirm your email \n";
    }

    if (errormessage != ""){
        alert(errormessage);
        return false;
    } else return true;
}

function verifyEmail() {
    var status = false;     
    var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

    if (document.myForm.email.value.search(emailRegEx) == -1) {
              alert("Please enter a valid email address.");
              return false;
    }


    if (document.getElementById('email').value == document.getElementById('confirmEmail').value) {
        alert("Thank you for your interest!");
            return true;              
    } else {
        alert("Email addresses do not match.  Please retype them to make sure they are the same.");
        return false;
    }

    return status;
}

function confirmEmailAddresses(){
    if (checkforblank() == true) {
        if (verifyEmail() == true) {
            document.getElementById("myForm").submit();
        }
    } 
}
</script>

HTML

<form name="myForm" action="contact.php" method="post" enctype="application/x-www-form-urlencoded" onsubmit="">
<table width="377" height="96" align="center">
  <tr>
    <td style="text-align: right">First Name:</td>
    <td><label for="FirstName"></label>
      <input type="text" name="fname" id="fname"></td>
  </tr>
  <tr>
    <td style="text-align: right">Last Name:</td>
    <td><label for="LastName"></label>
      <input type="text" name="lname" id="lname"></td>
  </tr>
  <tr>
    <td style="text-align: right">E-mail:</td>
    <td><input type="email" name="email" id="email"></td>
  </tr>
  <tr>
    <td style="text-align: right">Confirm E-mail:</td>
    <td><input type="email" name="confirmEmail" id="confirmEmail"></td>
  </tr>
</table>
<p align="center"><input type="submit" value="Send" onClick="confirmEmailAddresses()"><input type="reset" value="Reset Form"></p>

</form>             
4

4 に答える 4

1

送信ボタンからイベントを削除し、メイン フォーム要素のイベントにonClick追加return confirmEmailAddresses();してみてください。onsubmit

confirmEmailAddresses()検証に合格した場合は、関数に次の行があることを確認してくださいreturn true;! そうでなければreturn false;

于 2013-10-08T01:46:26.453 に答える
0

あなたは試すかもしれません

return false; 

各 alert() 呼び出しの後。

于 2013-10-06T02:26:14.713 に答える
0

それはあなたが望むものではありませんか?フォームが有効でない場合、アラートを表示してフォームを送信しないでください。

confirmEmailAddresses() を呼び出している html フォームを確認すると役立つ場合があります。

于 2013-10-06T02:45:50.047 に答える