0

フォームが検証され、確認 URL に移動するようです。問題が発生しているのは、フォームがフォーム データをメールに送信しないことです。私は JS がかなり苦手で、あなたの専門家の何人かがこのコードで私を助けてくれることを願っています。ウェブサイトのページへのリンクはhttp://www.thenaturalcottage.com/ContactUs.htmlです。

text/javascript ファイルのファイルはhttp://www.thenaturalcottage.com/contact.jsです。 ここに収まるようにコードをフォーマットし続けましたが、コードはエラーをスローし続けました。

連絡先

名前

住所

、州、郵便番号*

    <p>Telephone<span class="red">*</span></p>
    <p>(<input type="text" name="area" size="3" maxlength="3" onchange="return checkForNumber(this.value);" />
    <input type="text" name="exchange" size="3" maxlength="3" onchange="return checkForNumber(this.value);" />
    <input type="text" name="phone" size="4" maxlength="4" onchange="return checkForNumber(this.value);"  /></p>
    <p>E-mail address<span class="red">*</span><br />
    <input type="text" name="email" size="50" value="Enter your email address" onclick="if(this.value=='Enter your email address') this.value='';" / ></p>
    <p><strong>How do you perfer us to contact you</strong><br />        
    <input type="radio" name="contact" value="Phone" />Phone<br />
    <input type="radio" name="contact" value="email" />Email <br />
    <input type="radio" name="contact" value="mail" />Snail mail
    </p>
    <p>Which one of our services are you interested in recieving information about?</p>
<p>
   <input type="checkbox" name="services" value="classes" /> Classes <br />
   <input type="checkbox" name="services" value="events" /> Events <br />
   <input type="checkbox" name="services" value="customfragarance" /> CustomFragrance    <br />
   <input type="checkbox" name="services" value="suggestions" /> Suggestions<br />
   <input type="checkbox" name="services" value="other" /> Other
   </p>
   <h5>Please enter any comments here:</h5>
   <textarea name="comments" rows="10" cols="40">
   </textarea>

   <p><input type="submit" value="Submit" /></p>
   <p><input type="reset" value="Start Over" /></p>
</form>

ジャバスクリプトはこちら

function checkForNumber(fieldValue) {
   //validation for phone number
   var numberCheck = isNaN(fieldValue);
   if(numberCheck == true) {  
       window.alert("You must enter a numeric value!");
       }
}

function confirmSubmit(){
       //confirm submit
       var submitForm = window.confirm("Are you sure you want to submit the form?");
       //check to make sure that none of the text areas are blank
       if (document.forms[0].name.value == "" || document.forms[0].address.value == "" || document.forms[0].city.value == ""
                             || document.forms[0].state.value == "" || document.forms[0].zip.value == ""){
                             window.alert("You must enter your contact information.");
                             return false;
                             }
        //phone validation
        else if (document.forms[0].area.value == "" || document.forms[0].exchange.value == "" || document.forms[0].phone.value == "") {
                             window.alert("You must enter your telephone number.");
                             return false;
                             }
        //email error message
        else if (document.forms[0].email.value == ""){
                             window.alert("You must enter a correct email address");
                             return false;
                             }
       onsubmit="return confirmSubmit();"
}

function confirmReset(){
       var resetForm = window.confirm("Are you sure you want to reset the form?")
       if (resetForm == true)
       return true;
       return false;                     
       }

function submitForm(){
       if (document.forms[0].firstName.value == "" || document.forms[0].lastName.value == ""){
       window.alert("You must enter your first and last name!");
       return false;
       }
       else 
       return true;       
}

function contactMe(){
       for(var i=0; i<document.forms[0].delivery.length; ++i)
       {
       if (document.forms[0].delivery[i].checked == true)
       document.forms[0].delivery[i].checked = false;
       }
}
4

1 に答える 1

0

PHP でメールを送信する必要があります。

onsubmit="return confirmSubmit();"confirmSubmit を変更し、 document.getElementById("form").submit();id をライブフォームに追加します<form id="form" ...

この JS と ID をフィールドに追加して、JS が値を取得できるようにします。

function mail() {
    var req = new Request({
        method: 'get',  
        url: 'mail.php',
        data: {
       'name':document.getElementById("name").value,
       'adress':document.getElementById("adress").value,
       'city':document.getElementById("city").value
    },
    }).send();
}

そして、次のように呼び出される PHP ファイルを作成しますmail.php

<?php 
//Email Validation
$email = $_GET["email"];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//    echo "Your email is ok.".'<br />';
} else {
echo "Wrong email address format.".'<br />'; die();                     
} 

date_default_timezone_set('UTC');
// sending email via PHP's Mail()
$to      = $email;
$subject = 'Contact mail subject';
$message = "Name: '.($_GET["name"]).'<br />
            Adress '.($_GET["adress"]).'
            ETC...........";
$headers = 'From: cherie@thenaturalcottage.com' . "\r\n" .
'Reply-To: you@yourdomain.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>

単純で脆弱な PHP メールの代わりに、入力フィールドとメール ライブラリの検証を使用することを強くお勧めします。

お役に立てれば。

于 2013-06-07T03:47:22.980 に答える