2011-09-23 6 views
2

나는 무엇을 해야할지 잘 모르겠다. 여기 jquery 문제 .submit() 및 변수

당신은 자바 스크립트 내가 거짓 기본입니다 var에 오류가 알 수 http://jsfiddle.net/ProjectV1/LVPtN/

그것의 바이올린입니다.

오류가 있으면 true입니다.

양식의 각 입력 옆에 오류 값이 표시되었습니다.

변수 오류가 거짓이면 폼을 제출해야하며 false이면 안됩니다.

오류가 발생하면 문제가 발생하고 양식이 제출되지 않고 수정됩니다.

바이올린을보세요. 이 양식은 테스트를 위해 Google에 전달됩니다.

+1

당신이 당신이 오류를 검사 할 각 입력 요소와 연관 배열을 만들 필요가 있다고 생각합니다. 그런 다음 제출 이벤트가 실행되면 배열을 반복하여 오류 상태에있는 입력을 볼 수 있습니다. 있는 경우 제출 완료를 방지하십시오. –

+0

지금 고맙다. –

답변

1

제가 생각하기에 문제는 흐림에 호출 될 함수 안에있는 error입니다. 함수 호출이 완료되면 정의되지 않은 상태가됩니다. 거래는 변수가 전역 적이어야한다는 것입니다. 당신이이 일을해야 $(document).ready() 이상이를 넣어해야합니다

var error = false; 

$('#joinForm input').blur(function() { 
    var id = $(this).attr('id'); 
    var val = $(this).val(); 
    if (id == 'email') { 
     $('#emailMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="emailMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="emailMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cemail') { 
     $('#cemailMsg').hide(); 
    } 
    if (id == 'password') { 
     $('#passwordMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="passwordMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="passwordMsg" class="success">' + error + '</div>'); 
     } 
    } 
    if (id == 'cpassword') { 
     $('#cpasswordMsg').hide(); 
    } 
    if (id == 'username') { 
     $('#usernameMsg').hide(); 
     if (val == '') { 
      error = true; 
      $('#' + id).after('<div id="usernameMsg" class="error">' + error + '</div>'); 
     } 
     else { 
      $('#' + id).after('<div id="usernameMsg" class="success">' + error + '</div>'); 
     } 
    } 
    $('#joinForm').submit(function(){ 
     if (error == true) { 
      return false; 
     } 
     else { 
      return true; 
     } 
    }); 
}); 
+0

행운을 빌어서 시도해 보았다./업데이트 됨

+0

나는 당신의 아이디어를 시도한 후에 오류가 있다면 항상 사실이된다는 것을 깨달았다. 변수가 함수에 설정되지 않았으므로 이전에 발생했습니다. 그래서 나는 error = false가되도록 업데이트했다. 모든 성공 상태에서 변수의 값이 null 인 함수 밖에서 선언 된 변수와 함께 작동합니다. 입력 해 주셔서 감사합니다. –

+0

저에 따르면 유효성 검사는 true 또는 false를 반환하는 다른 함수에 넣어야합니다. 그리고 블러에이 함수를 호출하여 에러 변수를 업데이트하십시오. validate() 함수에서 처음에는 true로 설정된 임시 변수를 유지하고 false가되면 계속 진행해야하지만 다른 필드 유효성 검사에서 값을 false에서 true로 업데이트 할 수 없도록해야합니다. 결국 임시 변수의 상태를 반환합니다. –