Question

I have a simple rating system with jQuery Raty Plugin http://wbotelhos.com/raty/. The user should be able to click on a star, type in a very short text and then click a button. The button has a onClick function:

<a onclick="submitReview(eventID, stadt)" data-role="button" data-theme="b">Feedback abgeben</a>

This want this function to call eventID, stadt AND the number of stars selected. How is it possible to pass the number of stars to that onClick function? This is my code:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Single page template</title>

<link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css" />
<link rel="stylesheet" href="css/tellthedj.css" />
<link rel="stylesheet" href="css/styles.css" />
<link href='http://fonts.googleapis.com/css?family=Titillium+Web:300,600' rel='stylesheet' type='text/css'>
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/jquery.mobile-1.3.1.min.js"></script>
</head>

<body>

<div data-role="page" id="menu"> 
<script src="js/functions.js"></script>
<script type="text/javascript" src="js/jquery.raty.js"></script>
<script>
    $(document).delegate('#menu', 'pageshow', function () {
        $('#star').raty();
        stadt = GetURLParameter('stadt');
        document.getElementById('deinestadt').value = stadt; 
        id = GetURLParameter('id');
        getEventFromId(id); 
        getEventText(id);
        eventID = GetURLParameter('id');

        $("a.button").click(function(){
        //Lets say, the Stars are next element to the <a>
        var stars = $(this).next().find("input[name='score']").val();
        submitReview(eventID, stadt, stars);
});

    });
</script>


<div data-role="panel" id="panel">
    <input id="deinestadt" style="text-align:left;" type="search" name="stadt" value="" onfocus="if(this.value=='wo bist du?') this.value=''" id="stadt" value="" />
    <br>
    <a class="menu_button" onclick="location='events.html?stadt='+stadt;" data-transition="slide" data-role="button"><img src="img/icon-map-marker.png"><span class="button_text">Events in der Nähe</span></a>
    <a class="menu_button" onclick="location='menu.html?stadt='+stadt+'&id='+eventID;" data-transition="slide" data-role="button"><img src="img/icon-house.png"><span class="button_text">Event Übersicht</span></a>
    <br>
    <a class="menu_button" onclick="location='reviews.html?stadt='+stadt+'&id='+eventID;" data-transition="slide" data-role="button"><img src="img/icon-badge.png"><span class="button_text">Bewertungen ansehen</span></a>
    <a class="menu_button" onclick="location='review.html?stadt='+stadt+'&id='+eventID;" data-role="button"><img src="img/icon-pencil.png"><span class="button_text">Event Bewerten</span></a>
    <br>
    <a class="menu_button" onclick="location='photos.html?stadt='+stadt+'&id='+eventID;" data-role="button"><img src="img/icon-photos.png"><span class="button_text">Fotos ansehen</span></a>
    <a class="menu_button" onclick="location='upload_photo.html?stadt='+stadt+'&id='+eventID;" data-role="button"><img src="img/icon-upload-photo.png"><span class="button_text">Foto hochladen</span></a>
    <br>
    <a class="menu_button" onclick="location='music.html?stadt='+stadt+'&id='+eventID;" data-role="button"><img src="img/icon-note.png"><span class="button_text">Musikwunsch</span></a>

</div><!-- /panel -->

  <!-- header -->
  <div data-role="header" data-position="fixed" id="header">
    <a href="#panel" data-role="button" data-icon="bars" data-iconpos="notext" data-inline="true"></a>
    <h1 id="headline">Event Bewerten</h1>
  </div>
  <!-- /header --> 

  <!-- content -->
  <div data-role="content"> 
    <div id="review">
        <h3>wie gefällt es dir hier?</h3>
        <div id="star"></div><br>
        <form>
            <label for="textarea-1">Schreib etwas über das Event:</label>
            <textarea cols="40" style="height:150px;" rows="10" name="textarea-1" id="textarea-1"></textarea>
        </form>
        <a onclick="submitReview(eventID, stadt)" data-role="button" data-theme="b">Feedback abgeben</a>
    </div>  
  </div>
  <!-- /content --> 

<div data-role="footer" data-position="fixed">      

</div><!-- /footer -->

</div>
<!-- /page -->

</body>
</html>
Was it helpful?

Solution 2

I got it! I used the callback funktion of the plugin click: function(score, evt){}

This is my markup:

<script>
    $(document).delegate('#menu', 'pageshow', function () {
        $('#star').raty({
            click: function(score, evt) {
            $("#submit_button_review").click(function(){
                submitReview(eventID, stadt, score);
            });
            }
        });
        stadt = GetURLParameter('stadt');
        document.getElementById('deinestadt').value = stadt; 
        id = GetURLParameter('id');
        getEventFromId(id); 
        getEventText(id);
        eventID = GetURLParameter('id');

    });
</script>

and the button:

<a id="submit_button_review"  data-role="button" data-theme="b">Feedback abgeben</a>

Thanks for your help ;)

OTHER TIPS

I just saw that this plugin has hidden value named score, it has the count of star's slected..

Give the a an class like : .button

$("a.button").click(function(){
    //Lets say, the Stars are next element to the <a>
    var stars = $(this).next().find("input[name='score']").val();
    submitReview(eventID, stadt, stars);
});

Didnt test it. Its hard without the markup... Hope it helpd...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top