2013-05-20 2 views
0

У меня возникли проблемы с моими простыми проверками пароля.Проверка пароля в JavaScript Ошибка

Это то, что проверка делает

  • чек, если пароль меньше 8 символов
  • проверить, если это больше, чем 15 символов
  • проверить, если новый пароль и перепечатанные несоответствующие

Форма отправляется, если два пароля совпадают, даже если меньше или больше, чем проверки

Пожалуйста, смотрите мой код:

function on_submit(dest) { 

    var objForm = document.LogonForm; 
    var strMissingInfo = ""; 

    if (dest == 'logon') { 

     if (objForm.current.value != "") { 

      if (objForm.new1.value.length < 8 || objForm.new1.value.length > 15) { 
       strMissingInfo += "\n Password must be 8 to 15 characters long"; 

      } else if (objForm.retype.value != objForm.new1.value) { 
       strMissingInfo += "\n Password mismatch!"; 

      } 

      if (strMissingInfo != "") { 
       alert(strMissingInfo); 

      } else { 
       alert(strMissingInfo); 
       objForm.action.value = dest; 
       objForm.submit(); 
      } 
     } 
    } 
} 

--- HTML Часть

<input type="password" id="current" name="current" 
           onKeyPress="return isNumberKey(event)" style="width: 180px" 
           tabindex="1" required/> 

<input type="password" id="new1" name="new1" 
           onKeyPress="return isNumberKey(event)" style="width: 180px" 
           tabindex="2" required /> 

<input type="password" id="retype" name="retype" 
           onKeyPress="return isNumberKey(event)" style="width: 180px" 
           tabindex="3" required /> 

<a href="javascript:;"> 
        <input id="logonButton" class="submit" 
         type="submit" name="Submit" value="Confirm" tabindex="4" 
         onclick="on_submit('logon')" /> 
        </a> 
+3

Просто из любопытства, почему вы вводите верхний предел в 15 символов? – Blender

+0

Если вы используете кнопку в форме, она будет отправляться по умолчанию независимо от того, что вы делаете с Javascript. Можете ли вы показать нам, как эта функция вызывается? Также вы сначала проверяете 'current.value', а затем переключаетесь на' new1.value'. Это намеренно? –

+0

У меня на самом деле три поля. 1. Текущий пароль 2. Новый пароль 3. Повторите пароль. –

ответ

0

Поскольку вы не упоминаете предупреждения произошедшей, я думаю, что вы вызываете эту функцию с помощью кнопки из формы. Это будет автоматически отправлять форму, независимо от функции OnClick, если вы установите тип на кнопку, как описано в этом вопросе: How to prevent buttons from submitting forms

<input id="logonButton" class="submit" 
        type="button" name="Submit" value="Confirm" tabindex="3" 
        onclick="on_submit('logon')" /> 
+0

Да, я вызываю функцию onClick кнопки отправки. Спасибо ,, –

+0

ОК, тогда вам нужно будет добавить кнопку type = для разметки для этой кнопки. В противном случае он автоматически отправит форму. Ваша функция может работать или не работать, трудно сказать наверняка, так как я не знаю, что все ваши переменные, но она даже не работает прямо сейчас :) –

+0

он не будет отправлен, даже если проверки выполнены. –

0

, если вы хотите, чтобы форма потерпеть неудачу на представлении попробовать возвращение ложным, когда проверка не пройдена ,

 if (strMissingInfo != "") { 
      alert(strMissingInfo); 
      return false; 
     } 
+0

Я пробовал это. И ошибка все тот же. –

+0

Можете ли вы пройти разметку для вашего LogonForm? – lfender6445

0

Вы должны возвращать либо true (отправить форму) или false (представление стоп) по мере необходимости из функции, а также использовать onclick="return on_submit('logon');" - или даже лучше, вы должны удалить его и положить onsubmit="return on_submit('logon');" на самой форме.

+0

В моей области функций она должна что-то вернуть? –

+0

Эй, ошибка все та же. Я попробовал оба, onClick и onSubmit return .. –

+0

Ошибка все та же. Форма отправляется, даже если пароль меньше 8 или больше 15. –

Смежные вопросы