2012-07-17 3 views
-1

JQuery 함수는 웹 페이지를 새로 고칠 때만 작동하며 모든 브라우저에서이 방법으로 작동합니다. 내가 뭘 하려는지 특정 div 컨테이너에 모두 안에있는 텍스트 필드의 모든 그들 안에 데이터를 가지고, 나는 컨테이너에 체크 표시 이미지를 삽입하고 싶습니다. 하지만 현재이 이미지는 텍스트 필드의 모든 데이터를 입력하고 브라우저를 새로 고친 후에 만 ​​볼 수 있습니다.JQuery 함수는 브라우저 새로 고침에서만 작동합니다.

.rightbilling은 텍스트 필드가 평가하려고하는 div 컨테이너의 클래스이고 '# step1'은 .rightbilling을 포함하는 필드 세트입니다.

나는 이것을 몇 시간 동안 풀려고 노력해왔다. 도움은 크게 감사하겠습니다. 더 많은 정보가 필요하면 알려주세요.

$(document.body).ready(function() { 
     var all_complete = true;  
    $(".rightbilling").find("input:text").each(function(){ 


     if ($(this).val() == '') { 
      all_complete = false; 
      return true; 
     }; 


    if (all_complete) { 
     $("#step_1") 
     .animate({ 
      paddingBottom: "120px" 
     }) 
     .css({ 
      "background-image": "url(images/check.png)", 
      "background-position": "bottom center", 
      "background-repeat": "no-repeat" 
     }); 

     $("#step_2").css({ 
      opacity: 1.0 
     }); 
     $("#step_2 legend").css({ 
      opacity: 1.0 // For dumb Internet Explorer 
     }); 
    }; 
}); 
+1

글쎄, 함수는 페이지로드시 한 번만 실행됩니다 ... 필드가 채워 졌는지 정기적으로 확인하고 싶습니다. –

+0

'$ (document.body) .ready (...)','$ (document) .ready (...) '만 사용했습니다. 그게 문제가 될 수 있을까요? –

+0

다른 게시물에서 나는 이것을 보았다 : $ (window) .load (function() { 비슷한 문제를 해결하기 위해 사용되었지만 다른 것은 아무것도하지 않았다. – StraightEdge

답변

1
$(document.body).ready(
    function() { 
     var validation = function() { 
      var all_complete = true; 
      $(".rightbilling").find("input:text").each(
       function() { 
        if ($(this).val() == '') { 
         all_complete = false; 
         return true; 
        } 
        if (all_complete) { 
         $("#step_1").animate({ 
          paddingBottom: "120px" 
         }).css({ 
          "background-image": "url(images/check.png)", 
          "background-position": "bottom center", 
          "background-repeat": "no-repeat" 
         }); 
         $("#step_2").css({ 
          opacity: 1.0 
         }); 
         $("#step_2 legend").css({ 
          opacity: 1.0 // For dumb Internet Explorer 
         }); 
        } 
      }); 
     } 
     validation(); //call it when the page is loaded 
     $(".rightbilling").find("input:text").on("change",validation); //call it when input changes 
    } 
); 
+0

고마워요! 매력처럼 일했다. 올바른 페이지의 메신저를 확인하려면 왜 작동하는지에 대한 논리를 설명해 주시겠습니까? – StraightEdge

+0

은 페이지 준비 이벤트뿐만 아니라 각 요소가 변경 될 때 함수를 호출하기 때문에 발생합니다. – epascarello

+0

이미 유효성이 검증 된 텍스트가 텍스트 필드에서 제거 된 경우이 코드를 수정하여 이미지를 제거 할 수 있습니까? – StraightEdge

2

document.ready 함수를 사용 중이므로 페이지가로드 될 때만 함수가 호출됩니다. 입력 필드가 변경되면 함수를 호출하기 위해 onChange 리스너를 첨부하는 방법을 살펴보아야합니다.

+0

괜찮 았습니다. 정확히 어떻게 구현합니까? ive는 단지 며칠 동안 jquery로 작업했습니다 – StraightEdge

+0

코드로 판단하면 $ (document) .ready ($)를 $ (". rightbilling")로 바꿀 수 있습니다 find ("input : text") .change() – Luminously

+0

@ user1532643 : http://api.jquery.com/change/를보십시오. –

관련 문제