События 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, время: 08:41. |