Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2012, 10:30
Новичок на форуме
Отправить личное сообщение для TheHappy Посмотреть профиль Найти все сообщения от TheHappy
 
Регистрация: 05.03.2012
Сообщений: 6

Обновление события кнопки
Добрый вечер.

У меня на сайте есть кнопка c id="search". После нажатия на нее отправляется AJAX запрос на добавление юзера в таблицу ожидающих, и value меняется на "Отменить заявку".

Во время обновления страницы запускается AJAX запрос на проверку значения этой кнопки.

Сервер возвращает одно из трех значений:
yes - пользователь стоит в очереди, value кнопки должно быть "Отменить заявку". При нажатии на кнопку должен отправляться запрос на удаление из очереди. При повторном нажатии - добавление.
no - пользователя нет в очереди. Value - "Найти собеседника". Первое нажатие - добавить заявку, второе - удалить.
yes:disabled - пользователь есть в списках, и уже общается. Кнопка должны принять атрибут disabled. Появляется окно с чатом.

В этом самом окне с чатом есть кнопка "Закрыть окно". По кнопке запускается функция exitRoom. Функция скрывает окно с чатом, убирает атрибут disabled, а так же по новой выставляет события для кнопки "search".

Проблема заключается вот в чем: иногда, после закрытия чата", события для кнопки "search" не обновляются, и происходит какая то чертовщина.

Код js файла:
var button = null;

$(document).ready(function(){
    button = $("#search");
    checkButton();
    $('#exitRoom').bind('click', exitRoom);
});

function checkButton(){
$.post('interlocutor/checkButton',
	{flag: "check"},
        function(result){
        	if (result == "yes"){
                	button.attr('value','Отменить заявку');
                	checkInterlocutorID = setInterval(checkInterlocutor, 2000);
                	button.toggle(deleteInterlocutor, addInterlocutor);
            	}
            	else if (result == "no"){
                	button.attr('value','Найти собеседника');
                	button.toggle(addInterlocutor, deleteInterlocutor);
            	}
            	else if (result == "yes:disabled"){
                	button.attr('value','Отменить заявку');
                	button.attr('disabled','disabled');
                	checkInterlocutorID = setInterval(checkInterlocutor, 2000);
            	}
        });
}

var checkInterlocutorID;
var load_message;
    

function addInterlocutor(){
    $.post('/interlocutor/add',
           {flag: "record"},
           function(result){
                if (result == "add_ok"){
                    checkInterlocutorID = setInterval(checkInterlocutor, 2000);
                    button.attr('value','Отменить заявку');
                }
           });
}


function deleteInterlocutor(){
    $.post('/interlocutor/delete',
           {flag: "delete"},
           function(result){
                if (result == "delete_ok"){
                    clearInterval(checkInterlocutorID);
                    button.attr('value','Найти собеседника');
                }
           }
          );
}




function checkInterlocutor(){
        $.post('/interlocutor/checkInterlocutor',
        {flag: "check_interlocutor"},
        function(result){
            if (result == "start_room"){
                $('#room').fadeIn(1000);
                button.attr('value','Отменить заявку');
                button.attr('disabled','disabled');
                clearInterval(checkInterlocutorID);
                load_message = setInterval(Load, 2000);
            }
            });
}

function exitRoom(){
        $.post("/room/exitroom",
               {flag: "exit_room"},
               function(result){
                    if (result == "ok"){
                        clearInterval(load_message);
                        setTimeout("$('#search').removeAttr('disabled','disabled')", 1000);
                        $('#room').fadeOut(1000, checkButton);
                    }
               }
               
        );        
}



P.S. Прошу строго не судить, программированием начал заниматься совсем недавно. Адекватная и обоснованная критика приветствуется.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление содержимого панели по клику кнопки kalya ExtJS 1 07.11.2011 10:27
События Facebook, Вконтакте Кнопки Like bebeka Events/DOM/Window 0 03.11.2011 17:39
Получение ссылки на объект в обработчике нажатия кнопки pauluss ExtJS 1 22.06.2011 15:27
Обновление страницы после события ildaroit Javascript под браузер 2 09.02.2010 10:55
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16