5

http://www.fyneworks.com/jquery/star-rating/の JQuery 星評価プラグイン (v2.61) を使用してい ます。すべて順調ですが、ユーザーが投票したときに星を無効にしたいと思います。

現在、私のユーザーは自分の評価を選択してマウスをクリックします。これにより、AJAX 呼び出しを介してデータベースが更新されます。星評価者は、ユーザーの選択を示すように変化し、星は赤で表示されます。ただし、ユーザーが星の上にマウスを移動すると、それらはまだアクティブであり、別の投票を送信できます。この重複した投票サーバー側を停止していますが、ユーザビリティの観点から、ユーザーがクリックした後に星を無効にしたいと考えています。

(星の読み取り専用バージョンを表示するために div などを JQuery でリロードできると思いますが、もっとエレガントでシンプルな解決策があることを望んでいました)。

ありがとう。

4

5 に答える 5

5

ユーザーが自分の評価を更新できないのはなぜですか? おそらく、彼らの最初の評価が性急で、それを変更したいと考えているか、単に間違った星をクリックしただけかもしれません。

もちろん、各ユーザーを識別する何らかの方法と、各アイテムに対する各ユーザーの評価を格納する場所が必要です。

(実際にこれを行う方法はわかりませんが、使いやすさの観点からは、後で変更できないため、最初に正しく行うよりも優れたアプローチのようです。)

于 2009-02-25T21:02:09.233 に答える
3

この問題は、プラグインの最新リリースで解決されました。コールバックでは、次のように簡単に実行できます。

this.rating('disable');

ええ!

于 2009-03-17T21:40:52.037 に答える
2

私はプラグインの作成者であり、あなたがここで議論してきた問題を処理する必要がある新しいバージョン (3.1) を (文字通り) リリースしました。

@ Planetjones、this.rating('disable'); に注意してください。this.rating('readOnly'); と同じではありません。this.rating('readOnly') はコントロールが現在の選択を変更するのを止めますが、 this.rating('disable') は値が完全に送信されるのを防ぎます。

@ svinto、ラジオ ボックスを削除するために使用されるプラグインですが、現在は非表示になっています。元に戻すには、1. 星を削除する 2. ラジオ ボックスを表示する 3. ラジオ ボックスからプラグインのデータを削除する - $().data('rating') および $().data( 'rating.star') 4. ラジオ ボックスから 'change' イベントのバインドを解除します。

ちなみに、更新はここで発表されます: http ://twitter.com/fyneworks

于 2009-03-21T15:19:46.547 に答える
2

これは、「div をリロードする」ソリューションに似ているかもしれませんが、AJAX リクエストを実行した後に入力項目を無効にすることが最善の解決策であると思います。jQuery.ajax を使用している場合は、リクエストの完了後に実行するコールバック関数を指定できます。

jQuery.ajax({
    type: "POST",
    url: ...
    data: ...
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        jQuery('.star').attr('disabled', true);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        displayError();
    }
});

彼らのウェブサイトから:

disabled プロパティを使用して、表示目的のみにコントロールを使用します

<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/> 
<input name="star3" type="radio" class="star" disabled="disabled"/>
于 2009-02-23T18:43:03.780 に答える
1

本当に必要なのは、要素をラジオ ボタンに戻し、readonly を追加して、再び見栄えを良くすることです。元に戻すことはできないようですが、サーバーへの投稿時にすべてのイベントのバインドを解除できます。$("...").unbind();

于 2009-02-23T17:54:41.977 に答える