Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Валидация полей - сравнение полей пароль (https://javascript.ru/forum/dom-window/7433-validaciya-polejj-sravnenie-polejj-parol.html)

olva 01.02.2010 11:54

Валидация полей - сравнение полей пароль
 
Подскажите где ошибка или в JS так вообще нельзя?
Вот выдержка кода
$().ready(function(){
	           $("#myForm").validate({
		           rules : 
			          pass : "required",
			          rpass: {required :true, compare:('rpass')!=('pass'),},
		                  },
		           messages : 
				   pass : "Введите пароль",
				   rpass:{
					required:"ПОВТОРИТЕ ПАРОЛЬ",
					compare:"Вы ошиблись при повторе пароля",
							},
					
	                              });
});

Gozar 01.02.2010 13:32

Цитата:

Сообщение от olva (Сообщение 43053)
Подскажите где ошибка или в JS так вообще нельзя?
Вот выдержка кода
$().ready(function(){
	           $("#myForm").validate({
		           rules : 
			          pass : "required",
			          rpass: {required :true, compare:('rpass')!=('pass'),},
		                  },
		           messages : 
				   pass : "Введите пароль",
				   rpass:{
					required:"ПОВТОРИТЕ ПАРОЛЬ",
					compare:"Вы ошиблись при повторе пароля",
							},
					
	                              });
});

вроде так:
$().ready(function(){
  $("#myForm").validate({
       rules : {
           pass : "required",
           rpass: { 
                    required :true, 
                    compare:('rpass')!=('pass') 
            }
       },
       messages : {
           pass : "Введите пароль",
           rpass:{ 
                     required:"ПОВТОРИТЕ ПАРОЛЬ",
                     compare:"Вы ошиблись при повторе пароля" 
           }
       }
  });
});

Вы похоже совсем не понимаете, что тут написано :)

olva 01.02.2010 13:48

Спасибо за ответ. Я прошу извинить - у меня так и есть - делал вырезку из основного кода и пропустил скобку . А баг выглядит так-при проверке поля rpass заполнено оно или нет, правильно или нет - сообщение одно ПОВТОРИТЕ ПАРОЛЬ и оно изчезает при отправлении формы даже при разных паролях

olva 01.02.2010 14:27

Цитата:

Сообщение от Gozar
Вы похоже совсем не понимаете, что тут написано

Селектор $(”#myForm”) получает указатель на форму, а функция validate() устанавливает правила для полей в соответствии с полученными данными. Объект rules содержит имя поля и список правил. Если правил несколько, то они объединены в отдельный объект. Так, для поля pass просто указано правило “required”, т.е. обязательное поле, в то время как для поля rpass указан объект содержащий два правила – required и сравнение двух полей - неравность rpass и pass. Структура объекта messages такая же, как и для rules, за исключением того, что вместо атрибутов правил указаны сообщения об ошибках.

Если при отправке формы обнаружены ошибки, то форма не отправляется, а высвечивается сообщение об ошибке в виде тэга с классом error.

Gozar 01.02.2010 17:08

Цитата:

Сообщение от olva (Сообщение 43071)
А баг выглядит так-при проверке поля rpass заполнено оно или нет, правильно или нет - сообщение одно ПОВТОРИТЕ ПАРОЛЬ и оно изчезает при отправлении формы даже при разных паролях

Ну я не знаток jquery, юзаю только если что-нибудь в нем мне понадобится, поэтому могу и ошибаться.
compare:('rpass')!=('pass') //всегда вернет true так как сравниваются две разные строки, а именно: 'rpass' и 'pass', а не значения переменных

PeaceCoder 01.02.2010 19:31

Цитата:

Сообщение от Gozar
compare:('rpass')!=('pass')

тут видимо надо переменные подставлять со значениями или я тоже чегото не понял и на это обратил внимание но, подумал что "так задумано"

olva 01.02.2010 19:45

Логика подсказывает что нужны переменные - но только такие варианты
var pass = document.forms['myForm'].elements['pass'];
var rpass = document.forms['myForm'].elements['rpass'];

или вот так
var pass = $('#myForm').val('pass');
var rpass = $('myForm').val('rpass');

тоже не корректны. Форма отправляется на сервер без проверки JS.
Совсем заблудился!!

Gozar 01.02.2010 20:54

Цитата:

Сообщение от olva (Сообщение 43169)
Логика подсказывает что нужны переменные - но только такие варианты
var pass = document.forms['myForm'].elements['pass'];
var rpass = document.forms['myForm'].elements['rpass'];

или вот так
var pass = $('#myForm').val('pass');
var rpass = $('myForm').val('rpass');

тоже не корректны. Форма отправляется на сервер без проверки JS.
Совсем заблудился!!

можно вот так:
var pass = $('#myForm')[0].pass.value;


Часовой пояс GMT +3, время: 19:27.