2009-06-17 7 views
0

Ich füge die Sterne-Bewertung-Plugin von www.fyneworks.com/jquery/star-rating/ und ich finde die Dokumentation eher obskur. Es kann nur sein, dass ich an den falschen Stellen suche, was für mich nicht ungewöhnlich wäre.jquery Sterne-Bewertung-Plugin Hilfe benötigt

Wir sind auf einer asp.net MVC-Anwendung, und ich möchte das Stern-Rating-Objekt in 3 verschiedenen Seiten hinzufügen. Auf der Seite "create rating" möchte ich eine 5-Sterne-Bewertung implementieren, aber ich möchte das "Löschen" -Symbol ausblenden oder entfernen. Mit anderen Worten, wenn ich einem Benutzer die Möglichkeit gebe, etwas zu bewerten, möchte ich ihn auf 3 Sterne setzen und ihm nur erlauben, 1 zu 5 zu wählen. Ich möchte nicht, dass er die Bewertung mit Null einreichen kann . Das Konzept hinter Radiobuttons würde dies handhaben, außer die "delete" Option überschreibt dies.
Hier ist der Code, den ich derzeit habe.

 <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> 

Dies ist mein erster Beitrag so hoffe ich, das innerhalb Protokolls, ich habe auch eine andere Frage zu diesem gleichen jquery und ich weiß nicht, ob ich eine separate Frage schaffen soll oder diese hier hinzufügen. Für jetzt werde ich es hier hinzufügen, und wenn das falsch ist, lass es mich wissen und ich werde es als eine separate Frage erstellen.

Auf einer anderen Seite der Anwendung möchte ich mehrere Bewertungen für jede Entität zusammen mit der Bewertung anzeigen. Ich kann nicht sehen, wie das gemacht werden sollte. Ich habe eine foreach-Schleife, die jede Bewertung mit der Sternbewertung anzeigt, aber meine Schleife setzt alle Sterne für alle Bewertungen an den Anfang der Bewertungsliste. Mit anderen Worten, wenn für eine bestimmte Entität 6 Bewertungen vorliegen, werden 30 Sterne angezeigt (6 x 5), gefolgt von 6 Zusammenfassungszeilen. Ich gehe davon aus, dass ich den Namen des Eingangsnamens in meiner Schleife irgendwie dynamisch ändern muss, um die verschiedenen Objekte zu erhalten, die ihren Zusammenfassungszeilen zugeordnet sind. Hier ist der Code dafür:

<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> 

Vielen Dank im Voraus für die Hilfe.

Bob

+0

Diese sollten wahrscheinlich 2 getrennte Fragen sein. Bei Frage 1 müssen Sie das Plugin wahrscheinlich ändern, damit die Schaltfläche zum Abbrechen nicht angezeigt wird. Für Frage 2 müssen Sie jeden Satz von Eingaben anders benennen oder einige Änderungen am Plugin vornehmen, um einen Gruppierungsbegriff einzuführen. Dies sind beide Einschränkungen des Plugins. –

Antwort

1

Blick in den Code des Plug-ins, in erste Objekt haben Sie Funktion .each() in es Sie Code haben für Schaltfläche Erstellen Abbrechen es kommentierte: „// Create‚Abbrechen‘Knopf“ - Kommentar Code unten. Sollte die Abbrechen-Schaltfläche deaktivieren. Um als Standard 3 Sterne zu setzen, sehen Sie, wie sich dieser Code verhält, indem Sie ihn in Firebug ausführen und ändern, was Sie brauchen.

+0

Danke rot. Das wird den "Abbrechen" -Knopf los, aber später im Code scheint die draw: function(), insbesondere bei dem Kommentar "// Show/hide 'cancel' button", zu erwarten, dass der Cancel-Button da ist um es anzuzeigen oder zu verbergen. Ich bin mir nicht sicher, was Feuerwanze ist, aber es scheint mir, dass es etwas ist, was ich wissen sollte, also werde ich es nachschlagen. Danke für die Hilfe. –

+0

Ich habe die ternäre Anweisung von control.cancel am "Cancel" -Knopf anzeigen/ausblenden auskommen lassen und es funktionierte großartig. Danke für Ihre Hilfe. Ich habe immer noch Probleme mit der zweiten Frage, aber ich werde diesen Teil als separate Frage erneut einreichen. Ich bin nicht sicher, wie ich Ihnen Ihre Antwort geben soll, aber es war detailliert genug, dass ich meine Aufgabe erfüllen konnte. Vielen Dank. –

+0

Ich habe gerade etwas bemerkt, wenn Sie die Zeile kommentieren, die die Abbrechen-Schaltfläche erstellt, deaktiviert es auch die Callback-Funktion. Ich empfehle die Lösung von André van Toly zu verwenden, wenn sie ohne Nebenwirkungen funktioniert: $ .fn.rating.options = {required: true}; –

2

Sie könnten die Einstellung Parameter der Plug-in verwenden Sie die Löschtaste deaktivieren:

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

So aktivieren Sie das Plugin auf allen Radiobuttons mit der Klasse ‚Sterne‘ auf Ihrer Seite, aber ohne die Taste abbrechen :

$(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

musste den Standard aus der ursprünglichen js-Plugin-Datei bearbeiten, funktioniert aber. – Agos

1

auch dies:

$(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(); 
    } 
}); 

});