2009-06-17 7 views
0

J'ajoute le plugin d'étoiles de www.fyneworks.com/jquery/star-rating/ et je trouve la documentation plutôt obscure. Il se peut que je regarde au mauvais endroit, ce qui ne serait pas inhabituel pour moi.jquery star rating plugin aide nécessaire

Nous sommes sur une application MVC asp.net, et je voudrais ajouter l'objet de classement par étoiles dans 3 pages différentes. Sur la page "créer une évaluation", je voudrais mettre en place une note de 5 étoiles, mais je voudrais cacher ou supprimer l'icône "supprimer". En d'autres termes, lorsque je donne à un utilisateur la possibilité d'évaluer quelque chose que je voudrais par défaut à 3 étoiles et de leur permettre seulement de voter 1 - 5. Je ne veux pas qu'ils soient en mesure de soumettre la note à zéro . Le concept derrière radiobuttons gérerait cela sauf que le choix "delete" l'emporte.
Voici le code que j'ai actuellement.

 <td> 
      <strong> 
       <label for="Rating"> 
        Rating:</label></strong> 
     </td> 
     <td valign="top" width="180"> 
      <input name="rating" type="radio" class="star" value="1" /> 
      <input name="rating" type="radio" class="star" value="2" /> 
      <input name="rating" type="radio" class="star" value="3" checked="checked" /> 
      <input name="rating" type="radio" class="star" value="4" /> 
      <input name="rating" type="radio" class="star" value="5" /> 
     </td> 

Ceci est mon premier post, je l'espère est dans ce protocole, j'ai aussi une autre question sur ce même jquery et je ne sais pas si je devrais créer une autre question ou l'ajouter ici. Pour l'instant je vais l'ajouter ici, et si cela est faux, faites le moi savoir et je vais le créer comme une question distincte.

Sur une autre page de l'application, je veux afficher plusieurs commentaires pour chaque entité avec la note. Je ne vois pas comment cela devrait être fait. J'ai une boucle foreach qui affiche chaque avis avec la note d'étoiles, mais ma boucle met toutes les étoiles pour toutes les notes en haut de la liste de révision. En d'autres termes, s'il y a 6 évaluations pour une entité spécifique, 30 étoiles sont affichées (6 x 5) suivies de 6 lignes de résumé. Je suppose que je dois changer de façon dynamique le nom du nom d'entrée dans ma boucle, pour obtenir les différents objets associés à leurs lignes récapitulatives. Voici le code pour cela:

<table> 
<% foreach (var review in Model.Reviews) 
    { %> 
     <tr> 
     <% if (!Model.IsSingleBusiness) 
      { %> 
       <td> 
        <%= Html.ActionLink(Html.Encode(review.Title), "Details", new { id = review.ReviewId, eId = Model.Entity.EntityId })%> 
       </td> 
     <% } %> 
      <td valign="top"> 
       <%= Html.ActionLink("Details", "Details", new { id = review.ReviewId, eId = Model.Entity.EntityId })%> 
       <br />Rating: <%= Html.Encode(review.Rating)%> 
        <input name="rating" type="radio" class="star" disabled="disabled" /> 
        <input name="rating" type="radio" class="star" disabled="disabled" /> 
        <input name="rating" type="radio" class="star" disabled="disabled" /> 
        <input name="rating" type="radio" class="star" disabled="disabled" /> 
        <input name="rating" type="radio" class="star" disabled="disabled" /> 
       <br />By: <%= Html.Encode(review.Reviewer.FullName)%> 
      </td> 
      <td valign="top"> 
       <%= Html.ActionLink(Html.Encode(review.Title), "Details", new { id = review.ReviewId, eId = Model.Entity.EntityId })%> 
      </td> 
     </tr> 
<% } %> 

</table> 

Merci d'avance pour l'aide.

Bob

+0

Il devrait probablement y avoir 2 questions distinctes. Pour la question 1, vous devrez probablement modifier le plugin pour ne pas afficher le bouton d'annulation. Pour la question 2, vous devrez nommer chaque ensemble d'entrées différemment ou apporter quelques modifications au plugin pour introduire une notion de regroupement. Ce sont les deux limitations du plugin. –

Répondre

1

Regardez dans le code du plug-in, dans le premier objet que vous avez la fonction .each() dans ce que vous avez du code pour créer le bouton annuler il a commenté « // bouton Créer « annuler » » - le code de commentaire au dessous de . Devrait désactiver le bouton d'annulation. Pour définir par défaut 3 étoiles voir comment ce code se comporte en l'exécutant dans firebug et changer ce dont vous avez besoin.

+0

Merci rouge. Cela supprime le bouton 'cancel', mais plus tard dans le code, le draw: function(), en particulier sur le commentaire "// Show/hide 'cancel' button", semble attendre que le bouton d'annulation soit là pour le configurer pour afficher ou masquer. Je ne suis pas sûr de ce qu'est firebug, mais il me semble que c'est quelque chose que je devrais savoir, alors je vais chercher. Merci pour l'aide. –

+0

J'ai commenté l'instruction ternary control.cancel sur le bouton Afficher/masquer 'annuler' et cela a très bien fonctionné. Merci de votre aide. J'ai toujours des problèmes avec la deuxième question, mais je vais soumettre à nouveau cette partie en tant que question distincte. Je ne suis pas sûr de savoir comment vous donner le crédit pour votre réponse, mais c'était suffisamment détaillé pour que je puisse accomplir ma tâche. Je vous remercie. –

+0

Je viens de remarquer quelque chose, si vous commentez la ligne qui crée le bouton Annuler, cela désactive également la fonction de rappel. Je recommande d'utiliser la solution André van Toly une fois que cela fonctionne très bien sans effets secondaires: $ .fn.rating.options = {required: true}; –

2

Vous pouvez utiliser les paramètres paramètres du plug-in pour désactiver le bouton d'annulation:

$.fn.rating.options = { required: true }; 

Pour activer le plug-in sur tous vos radiobuttons avec la classe « star » sur votre page mais sans le bouton Annuler :

$(function(){ 
    $.fn.rating.options = { required: true }; 
    $('.star').rating({ 
     callback: function(value, link) { 
      // To submit the form automatically: 
      // this.form.submit(); 
      // To submit the form via ajax: 
      $(this.form).ajaxSubmit(); 
     } 
    }); 
}); 
+0

a dû modifier la valeur par défaut à partir du fichier plugin js d'origine, mais fonctionne. – Agos

1

également ceci:

$(function(){ 
$('.star').rating({ 
    required: true, 
    callback: function(value, link) { 
     // To submit the form automatically: 
     // this.form.submit(); 
     // To submit the form via ajax: 
     $(this.form).ajaxSubmit(); 
    } 
}); 

});

Questions connexes