2014-02-10 138 views
0

我使用一些Jquery/ajax代碼來根據select的值刷新div的內容。所以我有這樣的:AJAX調用後執行javascript

<select id="agence" name="agence" class="selectpicker scrollMe " data-style="btn-default" onchange="getContent('divmailsav')"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 
<div id="divmailsav"> 
    <?php include 'formmail.php'; ?> 
</div> 

的getContent是:

function getContent(x){ 
    var xhr=null; 
    if(window.XMLHttpRequest){xhr=new XMLHttpRequest();} 
    else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");} 
    envoi = "formmail.php?agence="+$('#agence').val()+"&soc=<?php echo $_SESSION['SOC'] ?>"; 
    xhr.open("GET",envoi,false); 
    xhr.send(null); 
    obj=document.getElementById(x); 
    obj.innerHTML =xhr.responseText; 
} 

這工作得很好。

但這裏是裏面有什麼「formmail.php」

<label for="inputEmail1" class="col-sm-2 control-label">Mail 1</label> 
<div class="col-sm-6"> 
    <input type="email" class="form-control" name="PMCPYMAIL1" id="inputEmail1" onkeyup="onkeyupmail(1,'')" placeholder="Email" value="<?php echo getmail('PMCPYMAIL1')?>"> 
</div> 
<input type="text" value="Envoyer mail de test" id="buttonmail1" onclick="onclickmail(1,'');" class="btn btn-default col-sm-2"> 
<input type="text" value="Effacer" class="btn btn-danger btn-mini col-sm-1" id="amail1" onclick="deletemail(1,'')" style="margin-left: 35px;"> 


<div class="col-sm-offset-2 col-sm-9"> 
<input type="submit" value="Valider" class="btn btn-primary"> 
</div> 

<script type="text/javascript"> 
    alert('tada'); 
    pageLoad = function(){ 

    if ($('#inputEmail1').val() == ''){ 
     $('#buttonmail1').hide(); 
     $('#amail1').hide(); 
    } 
    }; 
    pageLoad(); 

</script> 

腳本應該隱藏輸入文本,如果輸入的電子郵件是空的。當我第一次加載頁面時(警報'tada'顯示),但當它是來自ajax調用的調用時,它運行良好。你能幫我找到原因嗎? 在此先感謝。

回答

0
function getContent(x){ 
    var xhr=null; 
    if(window.XMLHttpRequest){xhr=new XMLHttpRequest();} 
    else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");} 
    envoi = "formmail.php?agence="+$('#agence').val()+"&soc=<?php echo $_SESSION['SOC'] ?>"; 
    xhr.open("GET",envoi,false); 
    xhr.send(null); 
    obj=document.getElementById(x); 

    if(xhr.responseText != ""){ 
     obj.innerHTML =xhr.responseText; 
    }else{ 
     $('#buttonmail1').hide(); 
     $('#amail1').hide(); 
    } 
} 

---------------新的代碼塊1 -----------------

//使用這在發送到服務器之前檢查您的電子郵件輸入框爲空值

<script> 
     $(document).ready(function(){ 

      $('form').click(function(){ 
       var emptyVals = []; 
       $(".form-control").each(function(){ 
        if($(this).val() == ""){ 
         emptyVals.push($(this)); 
        } 
       }); 
       if(emptyVals.length > 0){ 
        // don't send form one or more email values are empty 
       } 
      }); 

     }); 
    </script> 

--------------- new code block 2 --------- --------

//這將是我建議發送AJAX的方式(使用jQuery)

<script> 
     $(document).ready(function(){ 
      function getContent(){ 
       $.ajax({ 
        url:"formmail.php", 
        data:"agence="+$('#agence').val()+"&soc=<?php echo $_SESSION['SOC'] ?>" 
       }).done(function(data){ 
        if(data!=""){ 
         // checks to see if there is an empty string at the load of the content 

        } 
       }) 
      } 

     }); 
    </script> 

---------------新的代碼塊3 -----------------

//隱藏所有btns從一開始(你可能也由此推導出如何隱藏seperately每個元素),如果您在使用XMLHttpRequest的手動,而不是jQuery的$。阿賈克斯(設置

$(document).ready(function(){ 

    $(".form-control").each(function(){ 
     $(this) 
      .parent() 
       .next("input.btn") 
       .hide() 
        .next("input.btn-danger") 
         .hide(); 
}); 
+0

每當ajax調用觸發你笑uld評估空字符串的響應,並相應地隱藏輸入。 – Nate

+0

好吧,我明白了,但實際上我有3次輸入的5倍。它看起來像這樣http://puu.sh/6QSpJ.png我怎麼知道哪個輸入是空的whith xhr.responseText? – Roadirsh

+0

你能提供一個你的迴應的例子嗎? – Nate

0

),那麼你需要使用「的onreadystatechange」 :

var xhr = null; 

function getContent(x){ 
    if(window.XMLHttpRequest){xhr=new XMLHttpRequest();} 
    else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");} 
    envoi = "formmail.php?agence="+$('#agence').val()+"&soc=<?php echo $_SESSION['SOC'] ?>"; 
    xhr.open("GET",envoi,false); 
    xhr.send(null); 
    xhr.onreadystatechange = handleResponse; 
} 

function handleResponse() { 
    var result; 

    if (xhr.readyState == 4) { 
    if (xhr.responseText != "") { 
     $('#' + x).html(xhr.responseText); 
    } 
    else { 
     $('#buttonmail1').hide(); 
     $('#amail1').hide(); 
    } 
    } 
} 
+0

好吧,我明白了,但實際上我有3次輸入的5倍。它看起來像這樣http://puu.sh/6QSpJ.png我怎麼知道哪個輸入是空的whith xhr.responseText? – Roadirsh