2011-09-16 8 views
0
<script type="text/javascript"> 
var geid = function(x) { 
     var element = document.getElementById(x); 
     return element; 
    }   


function submitForm(){ 
var password = geid('password').value; 
var passwordConfirm = geid('passwordConfirm'); 

//THIS IS OF HIGH IMPORTANCE THAT THIS CONFIRM PASSWORD MATCHES 
//WILL NEED TO VALIDATE IT IN THE PHP AS WELL> 
else if (password == ""){ 
    registerMessage.innerHTML = "Please enter your Password."; 
    return false; 
} 
else if (passwordConfirm == "") { 
    registerMessage.innerHTML = "Please confirm your password.";    
    return false; 
} 

else if (passwordConfirm != password) { 
    registerMessage.innerHTML = "Your passwords don't match.";   
    return false; 
} 
else { 
    registerMessage.innerHTML = "Taking you to your profile, please wait a moment..."; 
    document.forms['registerform'].submit(); 
} 
} 

    <form method="post" action="register.php" id="registerform" onsubmit="return submitForm()"> 


    <label for="password" class="registerLabel">Password</label> 
    <input type="password" name="password" id="password" class="registerText" /> <br /> 

    <label for="passwordConfirm" class="registerLabel">Confirm Password</label> 
    <input type="password" name="passwordConfirm" id="passwordConfirm" class="registerText" /> <br /> 


     <div class="submitMessage"> 
      <input type="submit" id="submit" name="submit" value="Register" class="registerButton cleangray" /><br /> 
      <div id="registerMessage"><?php echo $error ?></div> 
     </div> 

     <div class="clear"></div> 

    </form> 
+1

이 질문을하기 위해 양식을 제출해서는 안되는 이유를 설명해야합니다. ** 코드 덤프는 질문이 아닙니다 ** –

답변

4

else if으로 시작할 수 없습니다. 당신은 실행하고 단지 표준 메커니즘을 제출하여 양식을 제출에서 유효성 검사 코드 중 하나를 방지하는 것 if

if (password == ""){ 
    registerMessage.innerHTML = "Please enter your Password."; 
    return false; 
} 

로 시작해야합니다.

유효성 검사에 접근하는 가장 좋은 방법은 아닙니다. 각 오류마다 돌아가는 대신 일련의 메시지를 작성하여 모두 한 번에보고 할 수 있습니다. 그런 식으로 사용자는 틀린 모든 것을 알고 있습니다. — 현재 메서드는 하나의 메시지 만 설정합니다.

+0

이 구문 분석 오류는 함수가 실행되는 것을 방지하므로'return false'가 호출되지 않습니다. 그러나이 메커니즘이 Javascript와 결합되어 있지 않기 때문에 양식 제출이 계속 진행됩니다. –

+0

@Tomalak Geret'kal : 당신이 그 코멘트를 쓰는 동안 내 대답을 업데이트하고있었습니다 :) – Town

+0

Meh @ iterative answering! –

2

JavaScript에 오류가 있으므로 else if을 먼저 사용하고 if을 정의하지 않아도됩니다. 이 오류로 인해 모든 JavaScript 코드가 실패합니다.

변경

else if (password == ""){ 

코드의 HTML에 http://jsfiddle.net/Zs3km/

BTW 데모를 작동

if (password == ""){ 

에 여기의 당신의 실수 있는지 확실하지 않습니다, <script> 태그에 있습니다. <form> 태그를 열기 전에 <script> 태그를 닫아야합니다.

관련 문제