javascript - 需要帮助将旧的工作 jquery 与新的 webform 合并

标签 javascript jquery forms

我为这个问题的标题道歉,因为我知道它看起来有点宽泛。不幸的是,我对 jquery 还是个新手,过去我得到了很多帮助来完成这项工作,现在我想改变一些事情,但我已经不知所措了。

我有一个在线网站:http://www.rattletree.com有一个时事通讯注册表单,当用户单击电子邮件框时,名称和城市字段也会下拉以进行填充。这一切都很好,但现在的工作方式是,信息直接发送到我的电子邮件地址,我需要手动将此人输入我们的电子邮件营销程序。我现在想通过从程序提供的嵌入代码中获取所需信息,将此信息直接发送到我们的电子邮件营销程序。我已经研究了几天,有时我设法将信息发送到程序而不隐藏 div,有时我设法隐藏 div 而没有正确发送表单。我有点迷路了。我希望有人能帮助我正确地合并这两件事。

这是发送到我自己的电子邮件地址的当前实时网站的工作代码:

(在标题中)

<div class="outeremailcontainer">
    <div id="emailcontainer">
        <?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="<?php echo $_POST['yourName']; ?>" /><br />
                </li>
                <li class="city"><label for="yourCity">City: </label>
                    <input type="text" name="yourCity" class="info" id="yourCity" value="<?php echo $_POST['yourCity']; ?>" /><br />
                </li>
                <li class="email">
                    <label for="emailFrom">Email: </label>
                    <input type="text" name="emailFrom" class="info" id="emailFrom" value="<?php echo $_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 class="clearing">
    </div>
  </div>
</div>

脚本:

$(document).ready(function () {
    $('#emailFrom').focus(function () {
        if ($('#overlay').length) {
            return;
        } // don't keep adding overlays if one exists

        $('#sendEmail').find('.name, .city').slideDown(300, function () {
            $(this).show();
        });

        $('.outeremailcontainer').css({
            position: 'relative',
            bottom: 0,
            left: 0,
            zIndex: 1001
        });

        $('<div id="overlay"></div>').appendTo('body');
    });

    $('#overlay').live('click', function () {
        $('#sendEmail').css({
            backgroundColor: 'transparent'
        }).find('.name, .city').slideUp(300);

        $('.outeremailcontainer').css({
            position: 'static'
        });
        $('#overlay').remove();
    });
});

在页面底部的包含中:

$(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"><br />You forgot to enter the email address to send from.</span>');
            hasError = true;

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

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

        var yourCityVal = $("#yourCity").val();
        if (yourCityVal == '') {
            $("#yourCity").after('<span class="error"><br />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,
                    yourName: yourNameVal,
                    yourCity: yourCityVal
                },
                function (data) {
                    $("#sendEmail").slideUp("normal", function () {
                        $("#sendEmail").before('<h3 class="register2">Thank you!  You\'re on the email list!</h3><p class="emailbox">Click <a href="http://rattletree.com/Songs/Live_EP/Chikende.mp3">HERE</a> for your free song.</p>');
                    });
                }
            );
        }
        return false;
    });
});

最后这是电子邮件营销程序提供的代码,我想将上述姓名、城市和电子邮件信息发送到:

<form action="https://madmimi.com/signups/subscribe/66160" method="post" id="mad_mimi_signup_form">
    <fieldset>
        <div class="mimi_field text email required">
            <label for="signup_email">Email</label>
            <input id="signup_email" name="signup[email]" type="text" placeholder="you@example.com" class="required">
            <div class="mimi_field_feedback"></div><span class="mimi_funk"></span>
        </div>
        <div class="mimi_field text required">
            <label for="signup_name" id="wf_label">Name</label>
            <input id="signup_name" name="signup[name]" type="text" class="required">
            <div class="mimi_field_feedback"></div><span class="mimi_funk"></span>
        </div>
        <div class="mimi_field text required">
            <label for="signup_city" id="wf_label">City</label>
            <input id="signup_city" name="signup[city]" type="text" class="required">
            <div class="mimi_field_feedback"></div><span class="mimi_funk"></span>
        </div>
        <div class="mimi_field action">
            <input id="webform_submit_button" value="Sign up!" type="submit" class="submit" data-default-text="Sign up!" data-submitting-text="Sending…" data-invalid-text="? You forgot some required fields">
        </div>
    </fieldset>
</form>

非常感谢您的帮助!

最佳答案

有一种简单的方法可以实现这一点,即使用 MadMimi 的 API 及其可用的官方 PHP 包装器 here on GitHub .

它不涉及对 jQuery 或 CORS 的任何更改。

他们有一个例子 how to add new subscribers to lists这就是您要找的。

我已经为您定制了示例:(将其添加到 /includes/sendemail.php)

<?php
require('MadMimi.class.php');
$mailer = new MadMimi('YOUR USERNAME (OR E-MAIL ADDRESS)', 'YOUR API KEY'); 
$user = array('email' => $_REQUEST['emailFrom'], 'name' => $_REQUEST['yourName'], 'city' => $_REQUEST['yourCity'], 'add_list' => 'My List');
$mailer->AddUser($user);
?>

这假设您已将 MadMimi.class.phpSpyc.class.php 文件放在与当前处理程序相同的目录中,/includes/sendemail.php.

请务必输入您的真实用户名和 API key (您应该可以在登录后从 MadMimi 获得)。

您甚至可以将现有的电子邮件脚本留在那里,只需将 API 调用添加到 MadMimi,每次有人订阅时都会收到通知,但不必执行任何操作:)

关于javascript - 需要帮助将旧的工作 jquery 与新的 webform 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524217/

相关文章:

forms - 监听嵌套表单组的表单控件内部的更改

javascript - 图片在 iPad 上显示为旋转,而不是在笔记本电脑上

javascript - 将文件内容拆分为行的结果包含 'undefined'

css - 通过 CSS 在 iF​​rame 中自定义表单(iFrame 内容不可编辑)

javascript - 去除 JS 设置的 Bootstrap Collapse 内联高度属性

javascript - 根据加载文件的内容阻止分配的成功处理程序

ruby-on-rails - Google Chrome - Ruby on Rails 触发 请匹配所需的格式

javascript - 带有外部 json 数据的 C3.js 分组条形图

Typescript 中的 Javascript 错误在 IE11 中生成 JS

javascript - 将类添加到发生碰撞的 div