2014-09-26 3 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"> 

Validate функция:

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; 
    } 
} 

Где моя ошибка? Пожалуйста, помогите)

Validate электронная почта:

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

добавил 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 проверки функции LocalStorage ключей.

+0

да код работает, я нахожу свою проблему. его в 'window.location.reload()'. thats all ... – nowiko

+0

@excluded_once Я рад, что вы это сделали. –