2009-02-23 14 views
5

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

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

(私は、 星の読み取り専用バージョンを表示するためにJQueryでリロードすることができたと思いますが、それ以上のものがあると思いました)。 エレガントでシンプルなソリューションです。

ありがとうございました。

答えて

1

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

2

これは 'reload the 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(); 
    } 
}); 

表示目的のためにのみ

<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"/> 
5

を コントロールを使用するためにdisabledプロパティを使用し更新自分の評価をユーザーに許可しないのはなぜ?おそらく彼らの最初の評価は急いで、彼らはそれを変更したいと思うかもしれません、または単に彼らが間違った星をクリックしたかもしれません。

もちろん、各ユーザーを特定する方法や、各アイテムのユーザー評価を保存する方法が必要です。

(私は実際にこれを行う方法はわかりませんが、ユーザビリティの観点からは、後で変更できないため、最初に正しいことを確認するよりも良いアプローチです)。

3

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

this.rating('disable'); 

Yey!

2

私はプラグインの作成者です。ここで議論してきた問題を処理する新しいバージョン(3.1)をリリースしました。

@ planetjones、 this.rating( 'disable'); this.rating( 'readOnly')と同じではありません。これは です。rating( 'readOnly')はコントロールの現在の選択の変更を停止しますが、this.rating( 'disable')は値が完全に送信されないようにします。

@ svinto、 プラグインはラジオボックスの削除に使用されましたが、現在は非表示になっています。 元に戻すには、 1.星を取り除く 2.ラジオボックスを表示 3.ラジオボックスからプラグインのデータを削除する - $()。data( 'rating')と$( ).dataの(「rating.star」) 4.ところでラジオボックス

から「変更」イベントのバインドを解除し、アップデートがここに発表されます。 http://twitter.com/fyneworks

関連する問題