2012-03-08 62 views
0

在我的网页我有单选按钮...如何获得jquery的星星id值?

<div class="stars-wrapper1">  
    <input type="radio" name="newrate" value="1" title="VeryPoor" @Html.Raw((Model.review == 1?"checked=\"checked\"":"")) />       
    <input type="radio" name="newrate" value="2" title="Poor" @Html.Raw((Model.review == 2?"checked=\"checked\"":"")) />  
    <input type="radio" name="newrate" value="3" title="Average" @Html.Raw((Model.review == 3?"checked=\"checked\"":"")) /> 
    <input type="radio" name="newrate" value="4" title="Good" @Html.Raw((Model.review == 4?"checked=\"checked\"":"")) /> 
    <input type="radio" name="newrate" value="5" title="Excellent"@Html.Raw((Model.review == 5?"checked=\"checked\"":"")) />  
    <input type="hidden" name="rate" value="@Model.ThePhoto.ID" disabled="disabled">      
</div> 

他们是单选按钮,当我使用功能的明星,他们变成这样..

<div class="stars-wrapper1">  
    <input type="hidden" name="rate" value="41" disabled="disabled">      
     <div class="ui-stars-star ui-stars-star-on ui-stars-star-disabled"> 
      <a title="">1</a></div> 
     <div class="ui-stars-star ui-stars-star-on ui-stars-star-disabled"> 
      <a title="">2</a></div> 
     <div class="ui-stars-star ui-stars-star-on ui-stars-star-disabled"> 
      <a title="">3</a></div> 
     <div class="ui-stars-star ui-stars-star-disabled"> 
      <a title="">4</a></div> 
     <div class="ui-stars-star ui-stars-star-disabled"> 
      <a title="">5</a> 
     </div> 
     <input type="hidden" name="newrate" value="0" disabled="disabled"> 
</div> 

当我点击一个明星我隐藏的价值,所以我可以保存到我的分数这是这张照片收到的评级,但我不能得到'这个'隐藏的价值,我得到41阿尔时间第一张照片ID,有几个这些明星在页面上与不同的隐藏ID

jquery:

$(document).ready(function() { 
    $(".stars-wrapper1").stars({ 
     oneVoteOnly: true 
    }); 
    $('.stars-wrapper1 a ').click(function() { 
     alert($('input:hidden[name$=rate]').val()); 
    }); 
}); 

有许多不同的图片,这些明星在一个页面上,所以相对的IM如何试图找出什么样的形象在用户评价。

这是我得到的恒星形成... Star Rating Plugin

+0

什么是.stars()...这是来自某种插件...? – 2012-03-08 10:18:59

+1

你可以链接到明星插件吗?它似乎不太可能会删除输入框,因为它们仍然需要存储该值。 – 2012-03-08 10:19:44

回答

1

的值存储在一个隐藏的输入。你可以尝试这样的:

$('.stars-wrapper1 a ').click(function() { 
    alert($('input:hidden', this).val()); 
}); 

为了更加精确,输入的名字似乎吨,速度结束了,所以你也可以尝试

$('.stars-wrapper1 a ').click(function() { 
    alert($('input:hidden[name$=rate]', this).val()); 
}); 
+0

我得到警报但未定义两种方式 – Beginner 2012-03-08 10:37:43

+0

@Beginner你可以在jsfiddle上发布你的标记的例子吗? – 2012-03-08 10:41:17

+0

嗯它的难度与CSS js和图像的数量 – Beginner 2012-03-08 10:49:02

0

的例子他们的页面上创建了名称=“速度”,存储选择的值的隐藏输入。

所以,你应该能够得到这样的价值:

$('.stars-wrapper1 a ').click(function() { 
    var result = $('input[name="rate"]').val(); 
    alert(result); 
}); 
+0

我认为隐藏字段的名称以rate结尾。此外,我会使用上下文来限制搜索,否则你的代码会中断,如果该插件应用在页面上的更多字段 – 2012-03-08 10:35:04

1

,如果你想在所有的隐藏的字段删除禁用让星速度,你可以做以下伎俩

$(".stars-wrapper1").stars({ 
     oneVoteOnly: true, 
     callback: function(ui, type, value) 
       { 
        $(':hidden').removeAttr('disabled') 
       } 
    }); 

它会从所有隐藏的字段删除禁用

1

我不确定你有多远与这个星级评分系统,我实际上正在实施另一个现在使用无线电进行输入的权利。我访问了您关联的网站,但我没有看到任何有关星级评分的示例。我只看到下拉菜单和实际的单选按钮。

我还注意到,该网站表示,它不能与没有补丁的jQuery 1.6一起工作,所以我猜想新版本的jQuery也不支持。

我使用的是相当不错的,虽然我一直在努力与一些jQuery保存收视率数据库,并读回表中。它没有内置数据库支持。http://www.fyneworks.com/jquery/star-rating/

这个看起来非常好,http://rateit.codeplex.com/releases/view/55958,因为它使用范围而不是无线电,看起来更健壮,并且支持jQuery 1.6到1-7.2。我可以切换到这个,但我刚刚完成了与其他数据库工作。

我知道这并不回答你的问题,但你选择的系统看起来不支持并且没有被更新,所以如果你没有花费很多时间,你可能会想要切换。