0

私はこれとまったく同じ MailChimp PHP/AJAX サブスクライブ処理フォームで作業しています -成功後のクリアテキスト値? -しかし、成功後にフォームフィールドを実際にクリートにする方法については、まったく困惑しています。

どうやらフェリックスがここで推奨したもの -成功後のクリアテキスト値? - コードは、ドキュメントの読み込み時に span 要素が存在する場合にのみ機能し、Ajax を使用している場合は、完了後に if ステートメントを呼び出す必要があります。

誰か助けてくれませんか?ユーザーがフォーム フィールドを正常に完了した後、フォーム フィールドをクリアするにはどうすればよいですか?

コードは次のとおりです。

    <?php  
    // store-address.php

    function storeAddress(){

        // Validation
        if(!$_GET['email']){ return "No email address provided"; } 

        if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
            return "Email address is invalid"; 
        }

        require_once('MCAPI.class.php');
        // grab an API Key from http://admin.mailchimp.com/account/api/
        $api = new MCAPI('my-api-key');

        // grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
        // Click the "settings" link for the list - the Unique Id is at the bottom of that page. 
        $list_id = "my-list";

        if($api->listSubscribe($list_id, $_GET['email'], '') === true) {
            // It worked!   
            return 'Success! Check your email to confirm sign up.';
        }else{
            // An error ocurred, return error message   
            return 'Error: ' . $api->errorMessage;
        }

    }

    // If being called via ajax, autorun the function
    if($_GET['ajax']){ echo storeAddress(); }
    ?>

フォームコード:

    <form action="<?=$_SERVER['PHP_SELF']; ?>" id="signup" class="subscribe" method="get">

        <fieldset>
            <input type="text" id="email" name="email" placeholder="your email address" />
            <input type="submit" name="submit" value="Send it" />
        </fieldset>
    </form>
    <p id="response"><? require_once('inc/store-address.php'); if($_GET['submit']){ echo storeAddress(); } ?></p>
    <script type="text/javascript" src="/js/prototype.js"></script>
    <script type="text/javascript" src="/js/mailing-list.js"></script>

メーリングリストの JavaScript コード:

    // Load Events Listeners
    Event.observe(window, 'load', init, false);

    function init(){
        Event.observe('signup','submit',storeAddress);
    }

    // AJAX call sending sign up info to store-address.php
    function storeAddress(event) {
        // Update user interface
        $('response').innerHTML = 'Getting email address...';
        // Prepare query string and send AJAX request
        var pars = 'ajax=true&email=' + escape($F('email'));
        var myAjax = new Ajax.Updater('response', 'inc/store-address.php', {method: 'get', parameters: pars});
        Event.stop(event); // Stop form from submitting when JS is enabled
    }
4

2 に答える 2

1

これには 2 つの解決策があります。

洗練されていない方法は、すべてのフォーム フィールド値を手動でリセットする JS 関数を作成することです。

より良い方法は、ID を使用して非表示のリセット入力をフォームに保存することです。

<input type="reset" id="blagh" style="display:none"/>

jQuery を使用して「クリック」するだけです。

$('#blagh').click();
于 2013-06-14T08:13:43.780 に答える