2010-01-04 3 views
1

Я использовал следующий код:перепечатать проверка пароля не работает

<script type="text/javascript"> 
function validate() { 
    if ((document.changepass.newpassword.value != '') && 
(document.changepass.retypenewpassword.value == 
document.changepass.newpassword.value)){ 
      document.changepass.retypenewpassword.blur(); 
      document.changepass.submit(); 

    } 
} 
</script> 

<form name="changepass" method="POST" action="changepassword.jsp" onsubmit="return validate();"> 

<table align="center"> 
    <tr> 
     <td>New Password:</td> 
     <td><input type="password" name="newpassword" size="20" 
      style="width: 145px" maxlength="10"></td> 
    </tr> 
    <tr> 
     <td>Retype New Password:</td> 
     <td><input type="password" name="retypenewpassword" size="20" 
      style="width: 144px" maxlength="10"></td> 
    </tr> 
    <tr> 
     <td><input type="submit" value="Change Password" name="operation" ></td> 
     <td><input type="reset"></td> 
    </tr> 
    </table> 
</form> 

но когда я даю непревзойденную запись, то и она становится changed.i значит функция Validate не вызывался. плз помочь

в надежде малиновка

+0

Вы будете необходимо отформатировать код с помощью кнопки 101010. Я предполагаю, что у вас есть теги HTML, которые удаляются. –

+1

Это не относится к вопросу, но вы можете быть уверены, что серверный код также предоставляет один и тот же элемент управления. Проверка Javascript легко пропущена, и вы не можете положиться на нее. –

ответ

2

Обработчик onsubmit на вашем <form> ищет возвращаемое значение, но не получает его от вашей функции validate. Вместо вызова submit() в функции, вы должны вернуть истинным или ложным, в зависимости от того, если форма Подтверждает (если функция возвращает false, что эквивалентно onsubmit="false", который отменит представление):

function validate() 
{ 
    if ((document.changepass.newpassword.value != '') && (document.changepass.retypenewpassword.value != document.changepass.newpassword.value)) 
    { 
    // A password is given but it doesn't match 
    // Perhaps you want to alert() an error message here to tell the user why the form doesn't validate? 
    return false; 
    } 

    return true; 
} 
+2

если логика неверна '((document.changepass.newpassword.value == '') || document.changepass.retypenewpassword.value! = Document.changepass.newpassword.value))' –

3

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

function validate() { 
    var d = document.changepass; 
    if((d.newpassword.value != '') && (d.retypenewpassword.value == d.newpassword.value)) { 
     return true; 
    } 
    return false; 
} 

В настоящее время, вы не указываете возвращаемое значение для validate(), и это интерпретируется как всегда возвращает истину, поэтому форма получает представлен. Вам не нужно вызывать submit() из вашей функции, просто верните true, если все в порядке.

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