将jquery表格邮件拼凑在一起

时间:2010-05-05 06:40:06

标签: jquery forms

我的新手在这里闪闪发光......我设法拼凑了一个效果很好的表单邮件,但是现在我需要添加两个字段,我不知道该怎么做。几个月来,我已经评论了一些我不需要的东西,但现在我被卡住了。

我借用本教程制作原始表格: http://trevordavis.net/blog/tutorial/ajax-forms-with-jquery/

但后来我把它用来制作电子邮件注册表格,因此我需要的字段是:

  • 收件人电子邮件(我的电子邮件硬编码)

  • 发件人电子邮件地址

  • 主题(硬编码)
  • 身体中的名字和城市 消息

对于我的表格,我有这个:

<div>
  <?php include('verify.php'); ?>
      <form action="index_success.php" method="post" id="sendEmail" class="email">
        <h3 class="register2">Newsletter Signup:</h3>
        <ul class="forms email">
         <li class="name"><label for="yourName">Name: </label>
     <input type="text" name="yourName" class="info" id="yourName" value=" " /><br>
    </li>

    <li class="city"><label for="yourCity">City: </label>
     <input type="text" name="yourCity" class="info" id="yourCity" value=" " /><br>
    </li>
     <li class="email"><label for="emailFrom">Email: </label>
     <input type="text" name="emailFrom" class="info" id="emailFrom" value="<?= $_POST['emailFrom']; ?>" />
                 <?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>'; 
                 ?>
            </li>

           <li class="buttons email">
               <button type="submit" id="submit">Send</button>
               <input type="hidden" name="submitted" id="submitted" value="true" />
           </li>

        </ul>
      </form>
</div>

emailcontact.js:

$(document).ready(function(){
  $("#submit").click(function(){
    $(".error").hide();
    var hasError = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;


    var emailFromVal = $("#emailFrom").val();

    if(emailFromVal == '') {
      $("#emailFrom").after('<span class="error">You forgot to enter the email address to send from.</span>');
      hasError = true;

    } else if(!emailReg.test(emailFromVal)) {
      $("#emailFrom").after('<span class="error">Enter a valid email address to send from.</span>');
      hasError = true;
    }

    var subjectVal = $("#subject").val();
    if(subjectVal == '') {
        $("#subject").after('<span class="error">You forgot to enter your name.</span>');
        hasError = true;
    }

    var messageVal = $("#message").val();
    if(messageVal == '') {
        $("#message").after('<span class="error">You forgot to enter your city.</span>');
        hasError = true;
    }
    if(hasError == false) {
      $(this).hide();
      $("#sendEmail li.buttons").append('<img src="/wp-content/themes/default/images/template/loading.gif" alt="Loading" id="loading" />');
      $.post("/includes/sendemail.php",
//emailTo: emailToVal, 
           { emailFrom: emailFromVal, subject: subjectVal, message: messageVal  },
             function(data){
            $("#sendEmail").slideUp("normal", function() {
              $("#sendEmail").before('<h3 class="register2">Success!</h3><p class="emailbox">You are on the Newsletter email list.</p>');
            });
             }
         );
    }
    return false;
  });
});

sendmail.php:

<?php
$mailTo = $_POST['emailTo'];
$mailFrom = $_POST['emailFrom'];
$subject = $_POST['yourName'];
$message = $_POST['yourCity'];
mail('me@myemail.com','Newsletter', 'Name='.$subject. ' City='.$message, "From: ".$mailFrom);

?>

感谢您的帮助!我正在试图解决这个问题。

1 个答案:

答案 0 :(得分:1)

不是100%确定这里的难点。从我对OP的阅读中,我假设如下:

  • 您希望在表单中添加另外两个字段(“名字”和“城市”),并将其内容显示在生成的电子邮件正文中。
  • 您想要对收件人的电子邮件地址进行硬编码。
  • 您想在发件人电子邮件地址的表单中添加其他字段。
  • 您想要对生成的电子邮件的主题进行硬编码。

我不完全确定这是否是您想要的“发件人电子邮件地址主题(硬编码)”听起来不太清楚。

无论如何,取消这些假设:

  1. 只需在PHP文件的表单中为“ firstName ”和“ city ”添加两个新字段(注意:这些只是建议的字段名称,并且可以是你想要的任何东西。但是为了清楚起见,我会在提供的解决方案中使用这些。)

  2. sendmail.php 文件中,修改如下:

    $ mailTo ='your_email_address@server.com'; //这是硬编码的收件人地址 $ mailSubject ='这是主题'; //这是硬编码的主题

    $ mailFrom = $ _POST ['emailFrom']; $ firstName = $ _POST ['firstName']; $ city = $ _POST ['city'];

    ...(其他字段,可能还有一些进一步的验证)...... $ mailHeader =“From:{$ mailFrom}”; $ mailBody =“Name = {$ firstName} City = {$ city}”;

    mail($ mailTo,$ mailSubject,$ mailBody,$ mailHeader);

  3. 我还应该注意,在包含表单的PHP文件中,没有名为“subject”的字段,但是你的Javascript / jQuery验证会引用它。

  4. 使用现有示例作为框架来熟悉系统是一个好主意,但有一点需要您开始重新定义该示例以执行您需要的工作,这意味着更改变量名称(您可以使用已经适应了其他目的),使它们合乎逻辑,适合于它们包含/用于的内容等。