0

こんばんは、

私は、どのフォームがプロセスと電子メールに送信されたかを判断するフォームプロセッサに取り組んでいます。場合によっては、クライアント側でさらに処理するために結果をjqueryに返す必要があります。私が直面している問題は、スクリプトを最初に実行すると配列が返されますが、それ以降の実行ではデータが返されないことです。

PHP

    switch ($form){
    case 'cta':
        echo json_encode(array('callback' => 'cta'));
        //echo"";
        break;
    case "questionaire":

        echo json_encode(array('callback' => 'quetionaire'));
        break;
    case "contact":

        echo json_encode(array('callback' => 'contact'));
}

Jquery

function doEmail(form){
$.ajax({
   data: $(form).serialize(),
   type: 'POST',
   url: 'core/process.php',
   dataType: 'json',
   success: function(data){
    $(form +' input, textarea').each(function(){$(this).val("") })
    $('#lightbox').fadeOut(600)
    $('#responder').fadeOut(600)
    alert('form name '+ data.callback);

   }
 })     
}
function inputProcessor(event, form){
var $name = $(form + ' input#name').val();
var $phone = $(form + ' input#phone').val();
var $email = $(form + ' input#email').val();
var $msg = $(form + ' textarea#msg').val();

var $i = 0;
var $i1 = 0;
$(form +' [req=yes]').each(function() {
    console.log('step 1')
        $i++;
        $(this).css('background-color', '');
        if(!$(this).val().length) {
            event.preventDefault();
            $(this).css('background-color', '#ffd7d7');                
        }
    });
    $(form +' [req=yes]').each(function() {
        console.log('step 2')
        if($(this).val().length > 0){
            event.preventDefault();
            $i1++;                
        }
    });
    //if($i1 === $i){            
        var result = regex.test($email)
        console.log('step 3')
        if (result === true){
            event.preventDefault();
            console.log('Testing Email')
            doEmail(form);
        }else{
            $(form +' input#email').css('background-color', '#ffd7d7');                
        }                
    //}
}

また、このサイトでは、「ページ」リンクをクリックすると表示される非表示のdivにあるすべてのコンテンツが更新されることはありません。

前もって感謝します

「新しいアレイを取得するには、実際にブラウザを終了して再起動する必要があります」を編集します。

編集2

3つのフォームの1

<form id="cta"  method="post">
<input type="text" req="yes" id="name" class="input"   name="name" placeholder="Full Name"/><br>
<input type="text" req="yes" id="phone" class="input" name="phone" placeholder="Phone Number"/><br>
<input type="text" req="yes" id="email" class="input" name="email" placeholder="Email Address"/><br>     
<input type="hidden" name="form" value="cta">
<span id="submit_btn">Submit entry</span>
</form>

2/3フォーム

<form id="contact_form" class=contact_form method="post">                            
<input type="text" req="yes" id="name" class="input3" name="name" placeholder="Name"/>
<br>  <br>
<input type="text" req="yes" id="phone" class="input3" name="phone" placeholder="Phone"/>
<br><br>
<input type="text" req="yes" id="email" class="input3" name="email" placeholder="Email"/>
<br><br>
<textarea id="msg" name="msg" placeholder="Type your message here" class="input3" rows="4"></textarea><br>
<input type="hidden" name="form" value="contact">
<span class="contact_button" id="SubmitContact"><div id="contact_submit">Send message</div></span>
</form>

3つのフォームのうちの3つ

<form id="response" class=form1  method="post">

<input type="text" req="yes" id="name" class="input2" name="name" placeholder="Name"/>
<br>
<input type="text" req="yes" id="phone" class="input2" name="phone" placeholder="Phone"/>
<br>
<input type="text" req="yes" id="email" class="input2" name="email" placeholder="Email"/>
<br>
<textarea id="msg" name="msg" placeholder="Type your message here" class="input2" rows="4"></textarea><br>
<br>
<input type="hidden" name="form" value="questionaire">
<span class="submit_button" id="Submit"><div id="submit">Send message</div></span>
</form>
4

1 に答える 1

0

わかりましたので、一晩寝て、フォーム変数の設定を解除する必要があることに気付いた後、自分の質問に答えました。

 var result = regex.test($email)
        console.log('step 3')
        if (result === true){
            event.preventDefault();
            console.log('Testing Email')
            formId = $(form +' input#formId').val();
            if(formId === 'cta'){
                $('#cta_form').children().fadeOut(600)
                window.location.href = 'docs/medical-alert.pdf';
            }
            doEmail(form, formId);
        }else{
            $(form +' input#email').css('background-color', '#ffd7d7');                
        }
        $(form).remove() 
于 2012-11-28T19:58:34.597 に答える