Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 2
1

Обновление события кнопки

05.03.2012, 20:44. Показов 1029. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер.

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

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

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

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

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

Код js файла:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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. Прошу строго не судить, программированием начал заниматься совсем недавно. Адекватная и обоснованная критика приветствуется.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2012, 20:44
Ответы с готовыми решениями:

использовать обработку события по изменению данных DataGridView в обработке события сторонней кнопки
Имеется некий DataGridView, при изменении данных в определенной ячейке которого создается...

Создайте обработчик события нажатия кнопки мыши на форме (Click), который будет устанавливать все кнопки в активный режи
Доброго времени суток! Помогите сделать задачу пожалуйста я полный ноль! (с описанием если...

Обработчик события кнопки в класс кнопки
Добрый день. Допустим, в форме логина надо получить имя пользователя и сделать кнопку для формы...

События кнопки
Люди, я новичек во флеше, скажите как на одну кнопку наложить несколько действий... т.е. по клику...

0
05.03.2012, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2012, 20:44
Помогаю со студенческими работами здесь

События кнопки
Добрый день! Можете мне помочь? Я пытаюсь подсоединить к кнопке действие. Что я сделал: - создал...

События кнопки
Добрый день! Помогите, пожалуйста. Есть Button1 и Image1. Мне нужно, чтобы при наведении на кнопку...

Обработка события кнопки
Только начал изучать Java, вот посоветовали вместо awt использовать swing. Попытался, в итоге...

События динамической кнопки
дорогие форумчане помогите решить проблему. создал я допустим кнопку, она у меня отразилась, т е...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru