Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   скрипт валидатора формы регистрации (https://javascript.ru/forum/misc/16921-skript-validatora-formy-registracii.html)

Rumato 28.04.2011 17:13

скрипт валидатора формы регистрации
 
Добрый день, заранее извиняюсь за глупый вопрос. Мне нужно разобраться в таком коде:

function getEmail(){
		
		var form = document.adminForm;
		var eadd = form.email.value;
		
		if( !$('email_ticker') )
			$('email_input').innerHTML	= $('email_input').innerHTML + "<div id=\"email_ticker\" style=\"padding-top:10px;\"></div>";
		
		$('email_field').value	= eadd;
		
		if( !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(form.email.value))) {
			$('email_ticker').setHTML('<span style="background:#FFFFCC;border:1px solid #CC0000;color:red;font-weight:bold;padding:5px 5px 5px 5px;">Неправильно введён e-mail.</span>');						
		} else {
			$('email_ticker').setHTML("<img src=\"<?php echo JURI::base()."images/wait.gif";?>\">&nbsp;Проверяем...");
			var url = 'index.php?option=com_virtuemart&tasked=chkuserinfo&format=raw&what=email';
			url = url + '&email=' + form.email.value;
			
			new Ajax(url, {
					method: 'get',
					onComplete: function(x){
						if(x == 1) {
							$('email_ticker').setHTML('<span style="background:#FFFFCC;border:1px solid #CC0000;color:red;font-weight:bold;padding:5px 5px 5px 5px;">Этот email уже зарегистрирован.</span>');							
						} else {
							$('email_ticker').setHTML('<span style="border:1px none transparent;color:green;padding:5px 5px 5px 5px;">Этот email \''+ $('email_field').value +'\'  свободен. </br>Можно продолжать регистрацию.</span>');
						}						
					}					
				}).request();

		}
	}



Я здесь не понимаю что такое: email_ticker, зачем он?

и как вообще этот скрипт работает?

Объясние, пожалуйста, только начинаю учиться многое не понятно.

Заранее спасибо))

melky 28.04.2011 17:43

var form = document.adminForm;
		var eadd = form.email.value;


в form форма, в eadd значение поля с именем email


if( !$('email_ticker') )
			$('email_input').innerHTML	= $('email_input').innerHTML + "<div id=\"email_ticker\" style=\"padding-top:10px;\"></div>";


омг

если нет элемента и ИМЕНЕМ ТЕГА email_ticker,то вставляем элемент DIV с ID, равным email_ticker. решетку пропустили в селекторе :)


$('email_field').value	= eadd;


это магия гавнокода.


if( !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(form.email.value))) {


если емайл НЕ соответствует шаблону (на хабре видел этот регэксп), то ...


$('email_ticker').setHTML('<span style="background:#FFFFCC;border:1px solid #CC0000;color:red;font-weight:bold;padding:5px 5px 5px 5px;">Неправильно введён e-mail.</span>');


пишем,что мыло неверно

иначе (мыло верное):



} else {
			$('email_ticker').setHTML("<img src=\"<?php echo JURI::base()."images/wait.gif";?>\">&nbsp;Проверяем...");


ставим картинку загрузчика и отправляем AJAX запрос. по приходу теста со страницы ....


var url = 'index.php?option=com_virtuemart&tasked=chkuserinfo&format=raw&what=email';
			url = url + '&email=' + form.email.value;
			
			new Ajax(url, {
					method: 'get',


					onComplete: function(x){

						if(x == 1) {


							$('email_ticker').setHTML('<span style="background:#FFFFCC;border:1px solid #CC0000;color:red;font-weight:bold;padding:5px 5px 5px 5px;">Этот email уже зарегистрирован.</span>');


... если страница возвратила 1, то мыло есть. пишем ошибку


} else {


							$('email_ticker').setHTML('<span style="border:1px none transparent;color:green;padding:5px 5px 5px 5px;">Этот email \''+ $('email_field').value +'\'  свободен. </br>Можно продолжать регистрацию.</span>');


						}						
					}					
				}).request();

		}
	}



мыла нет. продолжаем регу



Примечание. сотрите этот скрипт. скачайте Фленегана и займитесь действительно чем-нибудь полезным :)

Rumato 29.04.2011 08:54

Спасибо за ответ и за книгу - скачал, но мне всё же не понятно 'email_ticker' - зачем оно? я могу просто id этого элемента прописать и всё?
мне нужно разобраться с этим:)

melky 29.04.2011 17:33

там игра мозгов :)

$('email_ticker')


найдет все элементы с именем тега email_ticker

напр

<email_ticker>    текст   </email_ticker>



с чего я это взял? почитайте про селекторы.

а этот код
$('email_input').innerHTML + "<div id=\"email_ticker\" style=\"padding-top:10px;\"></div>";


вставляет в элемент такой html


<div id="email_ticker" style="padding-top:10px;">  ololo  </div>


видите несоответствие?) ID и имя тега

Rumato 30.04.2011 08:58

а понятно, скрипт ищет тег <email_ticker>, когда находит то вставляет

<div id="email_ticker" style="padding-top:10px;"> ololo </div>

Спасибо большое вроде во всём разобрался


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