проблема с кнопкой голосование

SPoX

Знаток
Регистрация
19 Апр 2014
Сообщения
186
Реакции
28
привет всем у меня на сайте установлено DLE 10.5 версия и у меня проблема в опросах в новостях

у меня poll.tpl так
Код:
<br />
<h2 class="heading">{question}</h2>
{list}
[voted]<div align="center">количество проголосовавших: {votes}</div>[/voted]
<br>
[not-voted]
<button class="fbutton" type="submit" onclick="doPoll('vote', '{news-id}'); return false;"><span>голосовать</span></button>
[/not-voted]
<br />
<br />

проблема в том что после голосования кнопка голосовать не исчезает если не сделать рефреш
остается и когда жмешь ничего не происходит
хочу сделать как в vote.tpl чтобы после голосования кнопка голосовать исчезало автоматический без рефреша

мне сказали что проблема в яваскрипте который так выглядит
Код:
var c_cache = new Array();
var dle_poll_voted = new Array();

function doPoll(event, news_id) {
    var frm = document.getElementById('dlepollform_' + news_id);
    var dle_poll_result = frm.status.value;
    var vote_check = '';
    if (dle_poll_voted[news_id] == 1) {
        return;
    }
    if (event != 'results' && dle_poll_result != 1) {
        for (var i = 0; i < frm.elements.length; i++) {
            var elmnt = frm.elements[i];
            if (elmnt.type == 'radio') {
                if (elmnt.checked == true) {
                    vote_check = elmnt.value;
                    break;
                }
            }
            if (elmnt.type == 'checkbox') {
                if (elmnt.checked == true) {
                    vote_check = vote_check + elmnt.value + ' ';
                }
            }
        }
        if (event == 'vote' && vote_check == '') {
            return;
        }
        dle_poll_voted[news_id] = 1;
    } else {
        dle_poll_result = 1;
        frm.status.value = 1;
    }
    if (dle_poll_result == 1 && event == 'vote') {
        dle_poll_result = 0;
        frm.status.value = 0;
        event = 'list';
    }
    ShowLoading('');
    $.post(dle_root + "engine/ajax/poll.php", {
        news_id: news_id,
        action: event,
        answer: vote_check,
        vote_skin: dle_skin
    }, function(data) {
        HideLoading('');
        $("#dle-poll-list-" + news_id).fadeOut(500, function() {
            $(this).html(data);
            $(this).fadeIn(500);
        });
    });
}

за ранее спасибо
 
Попробуйте так
Кнопка:
Код:
<button class="fbutton" type="submit" onclick="doPoll('vote', '{news-id}', $(this)); return false;"><span>голосовать</span></button>
яваскрипт
Код:
var c_cache = new Array();
var dle_poll_voted = new Array();

function doPoll(event, news_id, buttonObj) {
    var frm = document.getElementById('dlepollform_' + news_id);
    var dle_poll_result = frm.status.value;
    var vote_check = '';
    if (dle_poll_voted[news_id] == 1) {
        return;
    }
    if (event != 'results' && dle_poll_result != 1) {
        for (var i = 0; i < frm.elements.length; i++) {
            var elmnt = frm.elements[i];
            if (elmnt.type == 'radio') {
                if (elmnt.checked == true) {
                    vote_check = elmnt.value;
                    break;
                }
            }
            if (elmnt.type == 'checkbox') {
                if (elmnt.checked == true) {
                    vote_check = vote_check + elmnt.value + ' ';
                }
            }
        }
        if (event == 'vote' && vote_check == '') {
            return;
        }
        dle_poll_voted[news_id] = 1;
    } else {
        dle_poll_result = 1;
        frm.status.value = 1;
    }
    if (dle_poll_result == 1 && event == 'vote') {
        dle_poll_result = 0;
        frm.status.value = 0;
        event = 'list';
    }
    ShowLoading('');
    $.post(dle_root + "engine/ajax/poll.php", {
        news_id: news_id,
        action: event,
        answer: vote_check,
        vote_skin: dle_skin
    }, function(data) {
        HideLoading('');
        $("#dle-poll-list-" + news_id).fadeOut(500, function() {
            $(this).html(data);
            $(this).fadeIn(500);
buttonObj.hide();
        });
    });
}
 
  • Нравится
Реакции: SPoX
все рабтает но в сорсе остается кусок кода вот так

Код:
<form method="post" name="dlepollform_1413" id="dlepollform_1413" action="">
<br>
<h2 class="heading"> вопрос?</h2>
<div id="dle-poll-list-1413">ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll1" style="width:0%;">0%</span></div>ответ  - 0 (0%)<br>
<div class="pollprogress"><span class="poll2" style="width:0%;">0%</span></div>ответ  - 1 (8.33%)<br>
<div class="pollprogress"><span class="poll3" style="width:8%;">8.33%</span></div>ответ - 5 (41.67%)<br>
<div class="pollprogress"><span class="poll4" style="width:41%;">41.67%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll5" style="width:0%;">0%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll1" style="width:0%;">0%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll2" style="width:0%;">0%</span></div>ответ - 4 (33.33%)<br>
<div class="pollprogress"><span class="poll3" style="width:33%;">33.33%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll4" style="width:0%;">0%</span></div>ответ - 2 (16.67%)<br>
<div class="pollprogress"><span class="poll5" style="width:16%;">16.67%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll1" style="width:0%;">0%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll2" style="width:0%;">0%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll3" style="width:0%;">0%</span></div>ответ - 0 (0%)<br>
<div class="pollprogress"><span class="poll4" style="width:0%;">0%</span></div></div>
<div align="center">количество проголосовавших: 12</div>

<br>

<br>
<br><input type="hidden" name="news_id" id="news_id" value="1413">
<input type="hidden" name="status" id="status" value="0"></form>


то есть остается
<form method="post" name="dlepollform_1413" id="dlepollform_1413" action="">
и в конце

<input type="hidden" name="news_id" id="news_id" value="1413">
<input type="hidden" name="status" id="status" value="0"></form>
 
Не думаю, что те, изменения, которые я сделал, как-то связаны с подобным траблом.
В doPoll из элемента передали ссылку на текущий объект jQuery - $(this) и он доступен в buttonObj. После получения ответа от сервера - просто скрываем этот элемент:
buttonObj.hide();
В общем-то всё. Можно было и $('.fbutton').hide(), но если кнопок на странице несколько?
Или есть ещё вариант:
Код:
<button class="fbutton hideclass{news-id}" type="submit" onclick="doPoll('vote', '{news-id}'); return false;"><span>голосовать</span></button>
Код:
$(".hideclass" + news_id).hide()
 
Не думаю, что те, изменения, которые я сделал, как-то связаны с подобным траблом.
В doPoll из элемента передали ссылку на текущий объект jQuery - $(this) и он доступен в buttonObj. После получения ответа от сервера - просто скрываем этот элемент:
buttonObj.hide();
В общем-то всё. Можно было и $('.fbutton').hide(), но если кнопок на странице несколько?
Или есть ещё вариант:
Код:
<button class="fbutton hideclass{news-id}" type="submit" onclick="doPoll('vote', '{news-id}'); return false;"><span>голосовать</span></button>
Код:
$(".hideclass" + news_id).hide()
ааа нет нет все так и должно быть
все работает
спасибо за помощь
 
Назад
Сверху