2011-11-30 3 views
2

이메일 수신 여부를 확인하는 자바 스크립트 유효성 검사가 있는데 작동하도록 설정할 수 없습니다. 나는 post 또는 무언가에 익명 함수에 messages의 범위를 잃고응답에서 .post() 함수를 내 함수로 반환하는 방법은 무엇입니까?

function validateField(input) { 

    errors = false; 
    messages = ''; // 

    /* Begin checks */ 

    if (input.hasClass('jEmailUnique')) { 

     message = 'Email not taken'; 

     $.post('../ajax/j_validate.php', { 

      step: 1, 
      email: input.val() 
     }, function(response){ 

      if (response != '0') { 

       message = tipInvalid + message; 

       errors = true; 
      } 
      else { 

       message = tipValid + message; 
      } 

      messages += "<p>" + message + "</p>"; 
     }); 
    } 

    /* End checks */ 

    if (errors == true) { 

     input.addClass('jHasError').removeClass('jNoError'); 
    } 
    else { 

     input.addClass('jNoError').removeClass('jHasError'); 
    } 

    setTip(input, messages); // show pop up window with error messages 
} 

건가요?

+1

비동기 요청입니다. 따라서'messages' var을 사용하려고 할 때 요청은 여전히 ​​진행 중입니다. 아직 채워지지 않은. – PeeHaa

답변

1

내 생각 엔 게시물의 익명 기능에서 메시지 범위를 잃어 가고 있습니다. 어떻게 통과 할 수 있습니까?

당신은 아니지만 여전히 잘못하고 있습니다. messages 변수가 전역 변수입니다. 그것 앞에있는 var을 붙이면 기능 범위가 지정됩니다.

콜백에서 setTip(input, messages)으로 전화해야합니다. 그 전에는 messagesundefined입니다.

관련 문제