События 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 секунд |
так а в чем суть проблемы?
проверяем если true то делаем блок alert-success видимым, если false то alert-danger. А потом закрываем через setTimeout. или я бы вообще один блок сделал и ему присваивал бы класс или succeess или danger а также вписывал в него нужную инфу для пользователя (может быть даже эту инфу с сервера передавал объектом вместо теперишних true\false), а потом бы также через setTimeout закрывал и очищал этот блок. |
Я код пример как это выглядеть будет, можно?)
|
Вообще рекомендуют самому попытаться сделать а если не получится спросить, это и в правилах форума прописано, но дам простой код.
Оставим один блок вместо ваших двух, как и говорил, но добавим ему класс 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 во втором параметре можете подставлять свои данные которые пришли с сервера или свой текст - он запишется в блок. |
Да уже сам порешал, но спасибо
<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,
гуд. отличное решение, всяко лучше чем чей-то код юзать. Я на jQuery пилил исходя из того что он все равно есть на странице вместе с bootstrap ну + что бы появление более эффективное сделать без велосипеда. |
есть еще не большая проблема,
$('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) |
странная проблема - $('#submit').modal(options) всего лишь должен открывать или закрывать модальное окно
а объект options у вас существует? хотя без него код ниже не работал бы. В консоле в браузере есть ошибки после отправки формы? |
Цитата:
Цитата:
|
короче надо весь код смотреть в том числе и часть бекэнда который принимает инфу с формы через сокет
я не понял - что значит форма отправляется в бд, но не отправляется в ноду, и наоборот отправляется в ноду но не отправляется в бд - у тебя что нода одно делает а база другими скриптами пишется? Форма когда отправляется она отправляется с перезагрузкой страницы? Там по идее так и должно происходить когда расскоменчена строка о которой говорим - словили ошибку нет options код ниже не работает - то есть не отменяется событие и нет возврата false и страница перезагружается а форма отправляется без ноды, другое дело кто ее принимает. И что вообще эта строка должна делать? $('#submit').modal(options) - закрывать или открывать модальное окно? В любом случае нельзя ее вызывать с несуществующим options - вызови эту строку вместо options пропиши 'show' если нужно открывать окно с сообщением об отправке или 'hide' если нужно закрывать окно с этой формой. |
Часовой пояс GMT +3, время: 10:57. |