2012-12-04 57 views
1

我在HTML中實現以下李克特量表(注意最後的隱藏字段):jQuery的:單選按鈕價值,潛在價值比較

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

    }); 

}); 

如何可能我訪問隱藏的輸入值?在這個頁面上會有多個隱藏的答案,所以我需要爲這個特定的比例尺得到隱藏答案的價值。我願意將隱藏的答案轉移到另一個位置(可能在<ul>之內?)。

回答

1

.parent是不夠的(只選擇<li>)。我想你想.closest('ul').siblings ...

+0

這很好。 .closest()函數非常有用。謝謝。 – Rob

0

你沒有得到正確的元素在這裏。您需要檢查li元素的siblings('.answer-key'),而不是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(); 
0

試試這個

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

你需要去的UL首先.. 然後使用.next得到一個同級

0

這裏家長將選擇li元素

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

將其更改爲最接近(「ul」)的兄弟姐妹以獲得與ul相對應的隱藏元素。

感謝

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

//只是要使用的名稱作爲選擇的一部分,並驗證它是否與檢查情況:例如檢查...我給無線電選項添加了一個名稱..因爲您只能選擇一個名稱,所以它們可以具有相同的名稱