2014-09-26 1 views
1

안녕하세요, onsubmit 특성을 사용하여 양식의 유효성을 검사하려고합니다. 그러나 그것은 효과가 없습니다. 이 이야기에서 가장 재미있는 것은 2 일 전에 제대로 작동합니다. 양식 태그 :onsubmit 특성이 작동하지 않습니다.

<form action="../actionHandlers/registrationHandler.php" onsubmit="return validateRegistrationForm()" method="post" name="reg_form" enctype="multipart/form-data" id="reg_form"> 

유효성 검사 기능 : 내 실수가

function validateRegistrationForm() { 
    var errors = []; 
    if (document.forms['reg_form']['username'].value.length == 0) { 
     var usernameErrorMessage = localStorage.getItem('emptyLoginError'); 
     errors.push(usernameErrorMessage); 
    } 
    if (document.forms['reg_form']['password'].value.length == 0) { 
     var passwordErrorMessage = localStorage.getItem('emptyPasswordError'); 
     errors.push(passwordErrorMessage); 
    } 
    if (!validateEmail(document.forms['reg_form']['email'].value)) { 
     var emailErrorMessage = localStorage.getItem('emailInvalidError'); 
     errors.push(emailErrorMessage); 
    } 
    if (errors.length > 0) { 
     var htmlErrors = ''; 
     for (var i = 0; i < errors.length; i++) { 
      htmlErrors += errors[i] + "<br />"; 
     } 
     document.getElementById("error_message").innerHTML = htmlErrors; 

     return false; 
    } else { 

     return true; 
    } 
} 

입니까?

function validateEmail(email) { 
var pattern = /^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/; 

return pattern.test(email); 
} 

입력 :

유효성 검사 이메일) 도와주세요

<div> 
      <label for="username" id="username_label"><?php echo $languageArray['USERNAME'] ?></label><span id="required_mark">*</span><br/> 
      <input type="text" name="username" id="username_field" class="input_form_fields"> 
     </div> 

     <div> 
      <label for="password"><?php echo $languageArray['PASSWORD'] ?></label><span id="required_mark">*</span><br/> 
      <input type="password" name="password" id="password_field" class="input_form_fields"> 
     </div> 

     <div> 
      <label for="email"><?php echo $languageArray['EMAIL'] ?></label><span id="required_mark">*</span><br/> 
      <input type="text" name="email" id="email_field" class="input_form_fields"> 
     </div> 
+0

코드가 이전에 작동했다면 변경된 사항은 무엇입니까? – jeff

+0

'validateEmail' 함수를 제공 할 수 있습니까? –

+0

added validateEmail – nowiko

답변

1

이 코드를 사용해보십시오, 나는 테스트 한 그와의 작업 :

<form action="../actionHandlers/registrationHandler.php" onsubmit="return validateRegistrationForm()" method="post" name="reg_form" enctype="multipart/form-data" id="reg_form"> 

<div> 
    <label for="username" id="username_label"><?php echo (isset($languageArray['USERNAME']) ? $languageArray['USERNAME'] : "email"); ?></label><span id="required_mark">*</span><br/> 
    <input type="text" name="username" id="username_field" class="input_form_fields"> 
</div> 

<div> 
    <label for="password"><?php echo (isset($languageArray['PASSWORD']) ? $languageArray['PASSWORD'] : "email"); ?></label><span id="required_mark">*</span><br/> 
    <input type="password" name="password" id="password_field" class="input_form_fields"> 
</div> 

<div> 
    <label for="email"><?php echo (isset($languageArray['EMAIL']) ? $languageArray['EMAIL'] : "email"); ?></label><span id="required_mark">*</span><br/> 
    <input type="text" name="email" id="email_field" class="input_form_fields"> 
</div> 
<input type="submit"> 
</form> 

그리고 JS :

function validateEmail(email) { 
    var pattern = /^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/; 

    return pattern.test(email); 
} 


function validateRegistrationForm(e) { 
    var errors = []; 
    if (document.forms['reg_form']['username'].value.length == 0) { 
     var usernameErrorMessage = localStorage.getItem('emptyLoginError') ? localStorage.getItem('emptyLoginError') : "username error"; 
     errors.push(usernameErrorMessage); 
    } 
    if (document.forms['reg_form']['password'].value.length == 0) { 
     var passwordErrorMessage = localStorage.getItem('emptyPasswordError') ? localStorage.getItem('emptyPasswordError') : "password error"; 
     errors.push(passwordErrorMessage); 
    } 
    if (!validateEmail(document.forms['reg_form']['email'].value)) { 
     var emailErrorMessage = localStorage.getItem('emailInvalidError') ? localStorage.getItem('emailInvalidError') : "email error"; 
     errors.push(emailErrorMessage); 
    } 
    if (errors.length > 0) { 
     var htmlErrors = ''; 
     for (var i = 0; i < errors.length; i++) { 
      htmlErrors += errors[i] + "<br />"; 
     } 
     if(document.getElementById("error_message")){ 

      document.getElementById("error_message").innerHTML = htmlErrors; 
     } 
     return false; 
    } else { 

     return true; 
    } 
} 

나는 문제는 다음과 같은 원인으로 인해 발생 된 볼 방법 : 당신도 키가 있는지 확인하지 않습니다

  1. localStorage.getItem 사항.
  2. echo $languageArray['PASSWORD'] 다시 한번 전혀 확인이 없습니다, 비록입니다. PHP 오류는 아니지만 반향하기 전에 확인하는 것이 좋습니다.
  3. document.getElementById("error_message") 잘 사용하려면 innerHTML이지만 document.getElementById 내 반환 undefined을 사용하십시오.

결론 :

코드는 작동합니다.

그러나 :

당신은 내가 그 아니라 HTML이 로컬 스토리지를 키를 확인하는 경우는, 어떤 식 으로든에서 HTML을 만진 생각하고, 그 전에 일을 말한다.

+0

예 코드가 작동합니다. 내 문제가 있습니다. 그것의'window.location.reload()'. 그게 전부 야 ... – nowiko

+0

@excluded_once 네가 기뻐. –