2014-02-10 102 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