Есть 5 вариантов:
а +1+2+3+4+5
б +1+2+3+4+5
в +1+2+3+4+5
г +1+2+3+4+5
д +1+2+3+4+5
за каждый можно ставить от 1 до 5 баллов, всего получается 25 баллов максимум, нужно ограничить 10 баллами то есть 5 баллов за вариант а, 3 балла за г и если например захочу поставить за вариант д 4 балла он говорит, осталось всего 2 балла..
Подскажите как это можно сделать:)
Спустя 1 минута, 19 секунд (9.08.2010 - 13:03) Lenarfate написал(а):
Спустя 1 минута, 4 секунды (9.08.2010 - 13:04) web-monster написал(а):
эт я знаю, вот как именно сделать ограничение на максимум 10 баллов из 25, а после чего все 5 вариантов отправить
Спустя 44 минуты, 42 секунды (9.08.2010 - 13:48) Michael написал(а):
Ну так держи в переменной кол-во использованных баллов и по onchange меняй. Пробует нажать 5-ку - идет проверка - а сколько в наличии и т.д.
Спустя 3 часа, 29 секунд (9.08.2010 - 16:49) web-monster написал(а):
Вообщем сделал так, нормально или можно поумнее сделать?
var voteCount1 = Number(0);
var voteCount2 = Number(0);
var voteCount3 = Number(0);
var voteCount4 = Number(0);
var voteCount5 = Number(0);
function photoVote()
{
var id = $(this).attr('id').substr(4,1); // Получаем id звёзд из 5
var vote = $(this).attr('id').substr(6); // Балл
if(id==1) {
voteCount1 = Number(vote);
} else if(id==2) {
voteCount2 = Number(vote);
} else if(id==3) {
voteCount3 = Number(vote);
} else if(id==4) {
voteCount4 = Number(vote);
} else if(id==5) {
voteCount5 = Number(vote);
}
if(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5<10) {
alert('До 10')
} else {
alert('Больше 10')
}
return false;
}
Спустя 8 минут, 46 секунд (9.08.2010 - 16:58) Michael написал(а):
html еще покажи
Спустя 17 минут, 14 секунд (9.08.2010 - 17:15) web-monster написал(а):
<ul>
<li><div id="votesInfoCount"></div></li>
<li><span>Вариант 1:</span> <a href="#" id="vote1_1" class="photo_vote">1</a><a href="#" id="vote1_2" class="photo_vote">2</a><a href="#" id="vote1_3" class="photo_vote">3</a><a href="#" id="vote1_4" class="photo_vote">4</a><a href="#" id="vote1_5" class="photo_vote">5</a></li>
<li><span>Вариант 2:</span> <a href="#" id="vote2_1" class="photo_vote">1</a><a href="#" id="vote2_2" class="photo_vote">2</a><a href="#" id="vote2_3" class="photo_vote">3</a><a href="#" id="vote2_4" class="photo_vote">4</a><a href="#" id="vote2_5" class="photo_vote">5</a></li>
<li><span>Вариант 3:</span> <a href="#" id="vote3_1" class="photo_vote">1</a><a href="#" id="vote3_2" class="photo_vote">2</a><a href="#" id="vote3_3" class="photo_vote">3</a><a href="#" id="vote3_4" class="photo_vote">4</a><a href="#" id="vote3_5" class="photo_vote">5</a></li>
<li><span>Вариант 4:</span> <a href="#" id="vote4_1" class="photo_vote">1</a><a href="#" id="vote4_2" class="photo_vote">2</a><a href="#" id="vote4_3" class="photo_vote">3</a><a href="#" id="vote4_4" class="photo_vote">4</a><a href="#" id="vote4_5" class="photo_vote">5</a></li>
<li><span>Вариант 5:</span> <a href="#" id="vote5_1" class="photo_vote">1</a><a href="#" id="vote5_2" class="photo_vote">2</a><a href="#" id="vote5_3" class="photo_vote">3</a><a href="#" id="vote5_4" class="photo_vote">4</a><a href="#" id="vote5_5" class="photo_vote">5</a></li>
</ul>
Спустя 15 минут, 41 секунда (9.08.2010 - 17:31) Michael написал(а):
у тебя идет сначала присваивание, а потом проверка. Если он перевибирает оценку в варианте и не ОК - надо же не изменять оценку.
И без этих id="vote3_2" можно легко обойтись - сейчас прикину как.
И без этих id="vote3_2" можно легко обойтись - сейчас прикину как.
Спустя 9 минут, 43 секунды (9.08.2010 - 17:40) Michael написал(а):
вот без id в html-е определяем вопрос и вариант ответа:
$this = $(this);
$li = $this.parent('li');
$ul = $li.parent('ul');
var vote = $li.children().index($this);
var id = $ul.children().index($li);
alert(id + '|' + vote);
Спустя 4 минуты, 46 секунд (9.08.2010 - 17:45) web-monster написал(а):
Классно. Я как-то и не использовал index, теперь надо иметь ввиду
Спустя 9 минут, 45 секунд (9.08.2010 - 17:55) Michael написал(а):
Также только у всех <a> без атрибута id
И еще - всем ссылкам указываешь один и тот же класс, хотя если тому же ul присвоить id="ulvote" можно для ссылок правило записать:
#ulvote a {
}
и обойтись без указания class="photo_vote" каждой ссылке.
И еще - всем ссылкам указываешь один и тот же класс, хотя если тому же ul присвоить id="ulvote" можно для ссылок правило записать:
#ulvote a {
}
и обойтись без указания class="photo_vote" каждой ссылке.
Спустя 23 минуты, 2 секунды (9.08.2010 - 18:18) web-monster написал(а):
Да так явно короче:
<ul id="photo_votes">
<li><div id="votesInfoCount"></div></li>
<li><span>Вариант 1:</span> <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a></li>
<li><span>Вариант 2:</span> <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a></li>
<li><span>Вариант 3:</span> <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a></li>
<li><span>Вариант 4:</span> <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a></li>
<li><span>Вариант 5:</span> <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a></li>
</ul>
var voteCount1 = Number(0);
var voteCount2 = Number(0);
var voteCount3 = Number(0);
var voteCount4 = Number(0);
var voteCount5 = Number(0);
function photoVote()
{
$this = $(this);
$li = $this.parent('li');
$ul = $li.parent('ul');
var vote = $li.children().index($this);
var id = $ul.children().index($li);
if(id==1) {
voteCount1 = Number(vote);
} else if(id==2) {
voteCount2 = Number(vote);
} else if(id==3) {
voteCount3 = Number(vote);
} else if(id==4) {
voteCount4 = Number(vote);
} else if(id==5) {
voteCount5 = Number(vote);
}
if(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5<10) {
alert(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5)
} else {
alert(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5)
}
return false;
}
$('#photo_votes > li > a').click(photoVote);
Спустя 5 часов, 18 минут, 21 секунда (9.08.2010 - 23:36) web-monster написал(а):
Столкнулся с такой проблемой, когда выбрал например за
Вариант 1 - 5 баллов
за Вариант 2 - 5 баллов потом срабатывает алерт что всё много уже, но если
в вариант 3 или 4 поставить оценки то они плюсуются к общему счётчику, как сделать чтобы когда достигался лимит 10 остальные не считались + можно было изменить в меньшую сторону уже выбранные варианты!
Вариант 1 - 5 баллов
за Вариант 2 - 5 баллов потом срабатывает алерт что всё много уже, но если
в вариант 3 или 4 поставить оценки то они плюсуются к общему счётчику, как сделать чтобы когда достигался лимит 10 остальные не считались + можно было изменить в меньшую сторону уже выбранные варианты!
Спустя 1 час, 2 минуты, 44 секунды (10.08.2010 - 00:39) web-monster написал(а):
Вообщем вот это говно код работает как надо, теперь надо придумать как его сделать нормальным)
var voteCount1 = Number(0);
var voteCount2 = Number(0);
var voteCount3 = Number(0);
var voteCount4 = Number(0);
var voteCount5 = Number(0);
var voteCount6 = Number(0);
function photoVote()
{
$this = $(this);
$li = $this.parent('li');
$ul = $li.parent('ul');
var vote = $li.children().index($this)-1;
var id = $ul.children().index($li);
if(id==1) {
if(Number(vote)+voteCount2+voteCount3+voteCount4+voteCount5+voteCount6<=10) {
voteCount1 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
} else if(id==2) {
if(voteCount1+Number(vote)+voteCount3+voteCount4+voteCount5+voteCount6<=10) {
voteCount2 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
} else if(id==3) {
if(voteCount1+voteCount2+Number(vote)+voteCount4+voteCount5+voteCount6<=10) {
voteCount3 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
} else if(id==4) {
if(voteCount1+voteCount2+voteCount3+Number(vote)+voteCount5+voteCount6<=10) {
voteCount4 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
} else if(id==5) {
if(voteCount1+voteCount2+voteCount3+voteCount4+Number(vote)+voteCount6<=10) {
voteCount5 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
} else if(id==6) {
if(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5+Number(vote)<=10) {
voteCount6 = Number(vote);
$this.parent().find('a').removeClass('photo_votes_active'); // Очищаем выделения на строке
$this.addClass('photo_votes_active'); // Добавляем выделение
}
}
var voteSumm = voteCount1+voteCount2+voteCount3+voteCount4+voteCount5+voteCount6;
if(voteSumm<=10)
{
$('#votesInfoCount').html(10-voteSumm+' баллов');
}
else
{
alert(voteCount1+voteCount2+voteCount3+voteCount4+voteCount5+voteCount6)
}
return false;
}
Спустя 7 часов, 9 минут, 23 секунды (10.08.2010 - 07:48) Michael написал(а):
Не надо писать говнокод.
Вот я накидал, как сделал бы сам (любое кол-во вариантов)(html твой):
Вот я накидал, как сделал бы сам (любое кол-во вариантов)(html твой):
#photo_votes a {
height:10px; width:10px; margin:10px;}
.choice {background-color: #CCFFCC;}
var limit = 10;
$(document).ready(
function() {
var $lis = $('#photo_votes li:gt(0)'); // Строки выбора (без 1-ой т.к. там информационный div)
$lis.data('choice', 0); // ставим метку каждой строке - ничего не выбрано
$lis.find('a').click(function(){ // нажали по ссылке
$this = $(this); // <a>
$li = $this.parent('li');
var vote = $li.children().index($this); // текущий выбор
// проверяем сколько имеется в других вариантах
var have = 0;
$lis.each(function(){
if ($(this)[0] != $li[0]) have += $(this).data('choice');
});
var sum = have + vote;
if (sum > limit) alert('привысили лимит в ' + limit);
else { // устанавливаем новый выбор
$li.data('choice', vote);
$li.find('a').removeClass('choice');
$this.addClass('choice');
$('#votesInfoCount').text(sum);
}
return false;
});
}// ready
);
Спустя 2 часа, 40 минут, 36 секунд (10.08.2010 - 10:29) web-monster написал(а):
ок только первый вариант 1 получается, а нужно чтобы 0 был. Сейчас 6 ссылок:
0,1,2,3,4,5
И как потом отправить значения каждого, до этого так сделал:
0,1,2,3,4,5
И как потом отправить значения каждого, до этого так сделал:
$.post('plugin/photo/photo_func.php?type=save_vote',
{'save_vote':$.toJSON({"vote1" : voteCount1,"vote2" : voteCount2,"vote3" : voteCount3,"vote4" : voteCount4,"vote5" : voteCount5,"vote6" : voteCount6})},
function(data) {
if(data.status == 'ok') { $('#success_photo_votes').html(data.text).fadeIn(500, function () {$('#success_photo_votes').fadeTo(2500,0.9).fadeOut(500);}); }
if(data.status == 'error') {$('#errors_photo_votes').html(data.text).fadeIn(550, function () {$('#errors_photo_votes').fadeTo(2500,0.9).fadeOut(500); });}
});
return false;
Спустя 2 часа, 52 минуты, 16 секунд (10.08.2010 - 13:21) Michael написал(а):
Если с нуля, то значения считать:
А результат считывать:
var vote = $li.children().index($this) - 1; // текущий выбор
А результат считывать:
var $lis = $('#photo_votes li');
var voteCount1 = $lis.eq(1).data('choice');
var voteCount2 = $lis.eq(2).data('choice');
...
Спустя 2 часа, 9 минут, 23 секунды (10.08.2010 - 15:31) web-monster написал(а):
var voteCount1 = $lis.eq(1).data('choice'); почему-то 0 всегда и остальные значения
Спустя 11 минут, 32 секунды (10.08.2010 - 15:42) Michael написал(а):
html не менял и код мой используешь?
Спустя 3 минуты, 39 секунд (10.08.2010 - 15:46) Michael написал(а):
нулями будет если ты еще ничего не выбирал
Спустя 10 минут, 36 секунд (10.08.2010 - 15:56) web-monster написал(а):
Всё разобрался! Спасибо тебе! +1
Просто объявлял не в том месте по-этому и нули были. Сейчас всё классно!
Просто объявлял не в том месте по-этому и нули были. Сейчас всё классно!