2

こんにちは、絵コンペのページを作っています(ルール違い)

この「問題」に頭を悩ませているようには見えない

ルールは次のとおりです。ユーザーは 1 つの写真に投票できますが、自分の写真には投票できません。そして、彼は自分の投票を取り消して、別の投票に投票することができます。

私はそれをすべてチェックするPHPを持っていますが、うまくいきます。

タイプは0ですこの場合

function addVote(pictureID, competitionID, type){
$.post('vote.php', {pictureID:pictureID, competitionID:competitionID, vote:1}, function(data){
    if (data == 'success') {
    $("#comp_voteButton_"+pictureID).text('Remove vote');
    $("#comp_voteButton_"+pictureID).addClass("alreadyVoted");
    $("#comp_voteButton_"+pictureID).attr("onclick", "remVote(" + pictureID + ", " + competitionID + ")")
    if (type == 0){
    $('.button:not(.disabled, #comp_voteButton_'+pictureID+')').text('Only one vote permitted');
    $('.button:not(.disabled, #comp_voteButton_'+pictureID+')').removeClass('alreadyVoted');
            $('.button:not(.disabled)').addClass('.disabled, .red');

    getVote(pictureID, competitionID);
    }else {
        $().toastmessage('showErrorToast', "Error!");
    }
});

}

同じファイル内:

function remVote(pictureID, competitionID){
$.post('vote.php', {pictureID:pictureID, competitionID:competitionID, vote:0}, function(data){
    if (data == 'success') {
    $("#comp_voteButton_"+pictureID).text('Vote picture');
    $("#comp_voteButton_"+pictureID).attr("onclick", "addVote(" + pictureID +","+competitionID+","+0+")")
    $("#comp_voteButton_"+pictureID).removeClass('alreadyVoted');
    getVote(pictureID, competitionID);
    }else {
        $().toastmessage('showErrorToast', "Error!");
    }
});

}

編集:それが簡単になる場合のリンクは次のとおりです:

<a href="javascript:void(0);" class="button blue small" id="comp_voteButton_<?echo $row['ID']?>" onclick="addVote(<?echo $row['ID']?>, <?echo $id?>, <?echo $vote?>)">Vote</a>

私が欲しいもの: addVote では、他のすべてのボタンを 'onclick(remVote(ID, compID))' に設定する必要があります。

皆さんが私の質問を理解してくれることを願っています (おそらくそれは不可能であるか、奇妙な回避策を講じる必要があります)。

4

2 に答える 2

0

さて、私はそれが非常に奇妙な問題であることを認めます。

しかし、私は代わりに何か他のことをしました(そしてあなたの時間をありがとう)

代わりに私がしたこと:addVoteで...

$('.button:not(.disabled, #comp_voteButton_'+pictureID+')').hide();

次に、他のすべてのボタンを非表示にするため、ユーザーは複数の画像に投票できるとは思わないでしょう。removeVote 部分では、すべてのボタンが再び表示されます。

于 2012-12-08T16:17:33.030 に答える
0

data-value 属性などに画像の ID があれば簡単ですが、addVote 関数内でこのようなことを行うこともできます。

$("[id*=comp_voteButton]").each(function (i) {
    $(this).click(function(){
        remVote(pictureID, competitionID);
        var id = this.id.substring(16);
        addVote(id, competitionID);
    }
}
于 2012-12-08T16:24:02.797 に答える