Обновление события кнопки
Добрый вечер.
У меня на сайте есть кнопка 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. Прошу строго не судить, программированием начал заниматься совсем недавно. Адекватная и обоснованная критика приветствуется. |
Часовой пояс GMT +3, время: 12:27. |