2014-02-10 5 views
0

일부 Jquery/ajax 코드를 사용하여 select 값에 따라 div의 내용을 새로 고칩니다. 그래서 나는이 있습니다AJAX 호출 후 자바 스크립트 실행

<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; 
} 

이 꽤 잘 작동합니다.

하지만, 여기에 입력 이메일이 비어있는 경우 입력 텍스트를 숨길해야하는 스크립트가

<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> 

"formmail.php"안에 뭐가이다. 그것은 처음으로 페이지를로드 할 때 잘 작동하지만 ('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 -----------------

// 사용 서버에 보내기 전에 이메일 입력란에서 null 값을 확인하십시오.

<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> 

--------------- 새 코드 블록 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을 숨기 시작부터 다음 "을 onreadystatechange"를 사용합니다) 당신은 XMLHttpRequest를 대신 수동으로 jQuery의 $ 아약스를 (사용하여 설정되어있는 경우

$(document).ready(function(){ 

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

아약스 호출이 발생하면 uld는 빈 문자열에 대한 응답을 평가하고 그에 따라 입력을 숨 깁니다. – Nate

+0

알 겠어,하지만 사실은 3 번 입력이 5 번있다. 그것은 다음과 같습니다. http://puu.sh/6QSpJ.png 어떻게 입력이 공백 xhr.responseText인지 알 수 있습니까? – Roadirsh

+0

응답 예를 들어 줄 수 있습니까? – Nate

0

(당신은 아마 또한 별도로 각각의 요소를 숨기는 방법이에서 추론 할 수 있습니다) :

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 어떻게 입력이 공백 xhr.responseText인지 알 수 있습니까? – Roadirsh

관련 문제