jquery:将单选按钮值与隐藏值进行比较

时间:2012-12-04 16:50:35

标签: jquery html

我在html中实现了以下likert标度(注意结尾处的隐藏字段):

<ul class="likert">
    <li class="likert">Not Empathetic<input type="radio" value="1" />
    <li class="likert"><input type="radio" value="2" />
    <li class="likert"><input type="radio" value="3" />
    <li class="likert"><input type="radio" value="4" />
    <li class="likert">Very Empathetic<input type="radio" value="5" />
</ul>
<input class="answer-key" type="hidden" value="5"/>

我试图将所选单选按钮的值与存储在隐藏字段中的值进行比较。

在jquery中,我有以下内容:

$(document).ready(function(){

//click handler
$('input[type=radio]').click(function(){

    var value = $(this).val();

    //DOESN'T WORK
    var answer = $(this).parent().siblings('.answer-key').val());

    compute_score(answer,value);

    });

});

我如何访问隐藏输入的值?这个页面上会有多个隐藏的答案,所以我需要获得这个特殊的Likert量表的隐藏答案的值。我愿意将隐藏的答案移到另一个位置(可能在<ul>内?)。

5 个答案:

答案 0 :(得分:1)

.parent还不够(仅选择<li>)。我想你想要.closest('ul').siblings ......

答案 1 :(得分:0)

你在这里没有得到正确的元素。您正在检查siblings('.answer-key')元素的li,而不是ul

$('input[type=radio]').click(function(){
    var value = $(this).val();

    // $(this)                                  equals <input[type=radio]>
    // $(this).parent()                         equals <li class="likert">
    // $(this).parent().siblings('.answer-key') equals nothing!
    var answer = $(this).parent().siblings('.answer-key').val();
    compute_score(answer,value);
});

您需要$(this).parent().parent()才能获得ul。然后你可以检查兄弟姐妹。所以这应该这样做:

 var answer = $(this).parent().parent().siblings('.answer-key').val();

答案 2 :(得分:0)

试试这个

var answer = $(this).closest('ul').next('.answer-key').val();

你需要首先进入 ul .. 然后使用.next获取下一个兄弟

答案 3 :(得分:0)

这里父母将选择li元素

$(this).parent().siblings('.answer-key').val());

将其更改为最接近(“ul”)。兄弟姐妹以获取与ul。

对应的隐藏元素

由于

答案 4 :(得分:0)

HTML

<ul class="likert">
    <li class="likert">Not Empathetic <input name='radio_check' type="radio" value="1" />
    <li class="likert"><input type="radio" name='radio_check' value="2" />
    <li class="likert"><input type="radio" name='radio_check' value="3" />
    <li class="likert"><input type="radio" name='radio_check' value="4" />
    <li class="likert">Very Empathetic <input name='radio_check' type="radio" value="5" />
</ul>
<input class="answer-key" type="hidden" value="5"/>

的Javascript

jQuery(document).ready(function($){

//click handler
$('input[type=radio]').on('click',function(event){

    var value = $(this).val();

//call your javascript function
    compute_score(answer, $('input[type="hidden"].answer-key').val() );
event.preventDefault();
    });
});

//以防你想使用该名称作为选择器的一部分,并验证是否检查过它:例如检查...我在收音机选项中添加了一个名称..因为你只能选择一,他们可以有相同的名字