Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2016, 17:56
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

События JS + NODEJS
Добрый вечер, Господа, помогите пожалуйста с проблемой.

Вообщем, по сокету присылается инфа, true - false
В шаблоне, прием месаги
socket.on('info', function (data,callback) {
console.log(data);
alert(data)
});


мне нужно, выводить сообщение клиенту дивом, да - нет, использую bootstrap
<div class="alert alert-success" role="alert">True</div>
<div class="alert alert-danger" role="alert">False</div>
Далее что бы дивы закрывались по истечение 5 секунд.

То есть в кратце, приходит событие true, вызывается <div class="alert alert-success" role="alert">True</div>, закрывается через 5 секунд
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2016, 19:29
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

так а в чем суть проблемы?
проверяем если true то делаем блок alert-success видимым, если false то alert-danger. А потом закрываем через setTimeout.

или я бы вообще один блок сделал и ему присваивал бы класс или succeess или danger а также вписывал в него нужную инфу для пользователя (может быть даже эту инфу с сервера передавал объектом вместо теперишних true\false), а потом бы также через setTimeout закрывал и очищал этот блок.

Последний раз редактировалось Bond, 12.09.2016 в 19:33.
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2016, 21:56
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Я код пример как это выглядеть будет, можно?)
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2016, 00:17
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

Вообще рекомендуют самому попытаться сделать а если не получится спросить, это и в правилах форума прописано, но дам простой код.
Оставим один блок вместо ваших двух, как и говорил, но добавим ему класс alertInfo что бы не работать со стандартными классами бутстрап
<div class="alert alertInfo" role="alert" style="display: none"></div>


function alertInfo(className, text){
	$('.alertInfo').addClass(className).text(text).fadeIn();
	setTimeout(function(){
		$('.alertInfo').removeClass(className).fadeOut().text('');
	}, 5000);
}

socket.on('info', function (data,callback) {
	if (data) {
		alertInfo('alert-success', 'Сообщение пользователю когда true');
	} else {
		alertInfo('alert-danger', 'Сообщение пользователю когда false');
	}
});

При вызове функции alertInfo во втором параметре можете подставлять свои данные которые пришли с сервера или свой текст - он запишется в блок.
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2016, 00:42
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Да уже сам порешал, но спасибо

<div role="alert" hidden="" id = "test"></div>
socket.on('info', function (data) {
			console.log(data);

			if(data){
				var info = document.getElementById("test");
                                info.style.display = "block";
				info.className = 'alert alert-success';
				info.innerHTML = 'Успех';
			} else {
				var info = document.getElementById("test");
                                info.style.display = "block";
				info.className = 'alert alert-danger';
				info.innerHTML = 'Ошибка';
			}

		});

Последний раз редактировалось SpaceAlarm, 13.09.2016 в 01:03.
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2016, 01:45
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

SpaceAlarm,
гуд. отличное решение, всяко лучше чем чей-то код юзать.
Я на jQuery пилил исходя из того что он все равно есть на странице вместе с bootstrap ну + что бы появление более эффективное сделать без велосипеда.
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2016, 02:29
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

есть еще не большая проблема,
$('form').submit(function(event){
		//$('#submit').modal(options)
			event.preventDefault();
			socket.emit('test', { 
				name: $('#test1').val(),
				topic: $('#test2').val(),
				password: $('#test3').val(),
			});
			return false;
		});

Вообщем если сейчас не расскоментить, //$('#submit').modal(options) то код работает, но данные не отправляются в бд, и не стираются поля ввода, если раскомменить то все работает, //$('#submit').modal(options)
возможно нужно убрать .modal(options)
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2016, 04:22
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

странная проблема - $('#submit').modal(options) всего лишь должен открывать или закрывать модальное окно
а объект options у вас существует? хотя без него код ниже не работал бы.
В консоле в браузере есть ошибки после отправки формы?
Ответить с цитированием
  #9 (permalink)  
Старый 13.09.2016, 11:22
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Цитата:
"а объект options у вас существует?"
В том то и дело что нет, смотри, если закомментирован, то форма отправляется на ноду, но не добавляется в бд + не очищается форма, если расскоменить, то при нажатии форма очищается и отправляется в бд, но не отправляется на ноду

Цитата:
В консоле в браузере есть ошибки после отправки формы?
Когда расскоменчен, да говорит что option не найден, если закомментирован то ошибок нет

Последний раз редактировалось SpaceAlarm, 13.09.2016 в 11:26.
Ответить с цитированием
  #10 (permalink)  
Старый 14.09.2016, 01:22
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

короче надо весь код смотреть в том числе и часть бекэнда который принимает инфу с формы через сокет
я не понял - что значит форма отправляется в бд, но не отправляется в ноду, и наоборот отправляется в ноду но не отправляется в бд - у тебя что нода одно делает а база другими скриптами пишется?
Форма когда отправляется она отправляется с перезагрузкой страницы?
Там по идее так и должно происходить когда расскоменчена строка о которой говорим - словили ошибку нет options код ниже не работает - то есть не отменяется событие и нет возврата false и страница перезагружается а форма отправляется без ноды, другое дело кто ее принимает.
И что вообще эта строка должна делать? $('#submit').modal(options) - закрывать или открывать модальное окно? В любом случае нельзя ее вызывать с несуществующим options - вызови эту строку вместо options пропиши 'show' если нужно открывать окно с сообщением об отправке или 'hide' если нужно закрывать окно с этой формой.

Последний раз редактировалось Bond, 14.09.2016 в 01:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События в js Alex961 Общие вопросы Javascript 4 01.01.2016 16:46
Вакансия JavaScript разработчик / JS / Frontend developer (Санкт-Петербург) Сергей Грачёв Работа 0 21.09.2015 12:31
Пример тестовых заданий на js junior elshaarawy Учебные материалы 3 26.03.2015 15:17
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28