Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как узнать о появлении элемента на страницы (https://javascript.ru/forum/dom-window/70536-kak-uznat-o-poyavlenii-ehlementa-na-stranicy.html)

j0hnik 15.09.2017 15:17

если вам нужно выполнять разный код для вновь созданных элементов: предлагаю такой код.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
var i = 1, j = 1;
var observer = new MutationObserver(function(mutations) {
	if(document.querySelector("#id")&& i) {
		alert('Я здесь))');
		i--;
	}
	if(document.querySelector("#id2")&& j) {
		alert('Я Второй))');
		j--;
	}
});
observer.observe(document.body, {childList: true});
// добавить в body нужный элемент через 3 сек и через 6 сек.
setTimeout(()=>document.body.insertAdjacentHTML('beforeend', '<label id="id">Hello</label>'), 3000);
setTimeout(()=>document.body.insertAdjacentHTML('beforeend', '<label id="id2">Other TEXT</label>'), 6000);
	</script>	
</body>
</html>

DDim1000 15.09.2017 15:40

Цитата:

Сообщение от j0hnik (Сообщение 464583)
не нужно создавать два элемента с одинаковым ID отсюда проблемы.
...

ID не я же создаю, а JQuery.
Как тогда в такой ситуации поступить, если одно и тоже поле нужно проверить на пустоту, проверяется формат телефона, и посмотреть в базе, не зарегистрирован ли уже кто-то с этим номером?:
function clearPhone(val){
	var newVal = val.replace(/[^\d]+/g, '');
	if (newVal == '') {
		return false;
	  }else{
		  return newVal;  
		}
	};
  $.validator.addMethod('reg_phone', function (value) {
 		   var phone = clearPhone(value); console.log(phone);
		   var formatPhone = /79/g;
		   var rezzult = phone.match(formatPhone); 
			if (rezzult == null) {
				return false;
			 }	
     .....
         $('#form_reg').validate({

                //Правила для проверки

                rules: {
                  .....
                  		    "reg_phone":{ 
				    required:true,
					reg_phone: { reg_phone: true },
					remote: {url: "check_phone.php", type:"post" } 									
			    },
             			},
                //Текста предупреждений

                messages: {
                    .....
                				"reg_phone":{ 
				    required: "Укажите номер телефона!",
					reg_phone:"Неверный формат номера телефона!",
					remote: "Пользователь с таким номером уже <br /> зарегистрирован!"
			    },
							 
             },

Вообще у меня задача такая:
Когда выводиться сообщение: "Пользователь с таким номером уже <br /> зарегистрирован!", нужно изменить margin-top, чтоб сообщение выше было.

рони 15.09.2017 15:45

DDim1000,
может css??

j0hnik 15.09.2017 16:00

Цитата:

Сообщение от DDim1000 (Сообщение 464588)
ID не я же создаю, а JQuery.

сайт своей жизнью живет? не слушается вас? НАКАЖИТЕ ЕГО! :D

DDim1000 15.09.2017 16:46

Цитата:

Сообщение от рони (Сообщение 464590)
DDim1000,
может css??

Естественно нужно менять стили..., нужно сделать margin-top: -3, если выводится вот это сообщение: "Пользователь с таким номером уже зарегистрирован!".
А как узнать о том, что вывелось именно это сообщение? Просто нужно узнать длину строки, и если длинна строки больше 31 символа, то изменить margin-top.

рони 15.09.2017 18:26

DDim1000,
1 нормальный способ изучить validate - изменить шаблон для remote
2. ничего не изучать, что уже ненормально, а просто изменить css (консоль в помощь, смотрите html этого remote сообщения, вычисляйте селектор).
всё остальное лучше не рассматривать

DDim1000 16.09.2017 12:38

Цитата:

Сообщение от рони (Сообщение 464601)
DDim1000,
1 нормальный способ изучить validate - изменить шаблон для remote
2. ничего не изучать, что уже ненормально, а просто изменить css (консоль в помощь, смотрите html этого remote сообщения, вычисляйте селектор).
всё остальное лучше не рассматривать

Вы хотите сказать, что у этих трех сообщений будут разные селекторы?:
"reg_phone":{
                    required: "Укажите номер телефона!",
                    reg_phone:"Неверный формат номера телефона!",
                    remote: "Пользователь с таким номером уже <br /> зарегистрирован!"

рони 16.09.2017 14:49

DDim1000,
обернуть сообщение в span.remote не пробовали?

DDim1000 16.09.2017 19:07

Цитата:

Сообщение от рони (Сообщение 464652)
DDim1000,
обернуть сообщение в span.remote не пробовали?

рони, спасибо! Вопрос решен!:
remote: '<p id="number_is_busy">Пользователь с таким номером уже <br /> зарегистрирован!</p>'

#number_is_busy{
	margin-top: -9px;
}

рони 16.09.2017 19:35

DDim1000,
:) :victory:


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