2011-03-10 36 views
0

我想要做的是給用戶一個相當基本的建議,在這個例子中我有5個選項和3個答案。答案將被分配給複選框值的特定組合。例如,單獨檢查'A'可能產生結果1,而如果同時檢查'A'和'B',則答案是結果2.D,E,A可以給出結果3,而B,E,A給出結果2.希望你明白這一點。複選框的不同組合使用jQuery產生不同的結果

<form action=""> 
     <input type="checkbox" name="options" value="A" />Choice A<br /> 
     <input type="checkbox" name="options" value="B" />Choice B<br /> 
     <input type="checkbox" name="options" value="C" />Choice C<br /> 
     <input type="checkbox" name="options" value="D" />Choice D<br /> 
     <input type="checkbox" name="options" value="E" />Choice E<br /> 
     <br /> 
     <input type="submit" value="answer"> 
</form> 

和jQuery的將是沿着這些線路

$(':checkbox').click(function() { 
    var value = $(this).val(); 

    if ($(this).val(["A","B","C"]).is(':checked')) 
     $('.result1').show(value); 
    else 
     $('.result1').hide(value); 

    if ($(this).val(["A","D","E"]).is(':checked')) 
     $('.result2').show(value); 
    else 
     $('.result2').hide(value); 

這有意義的東西嗎?我會很感激任何幫助。我已經添加了我的問題,如果有人想獲得我的問題更好看

http://jsfiddle.net/gdjones83/tJY69/32/

回答

0

需要兩個輔助函數的jsfiddle:

這一點擴展到jQuery將讓你知道所有val()結果一組元素,讓他們作爲一個數組:

$.fn.multipleVals = function() { 
    var result = new Array(); 
    $(this).each(function() { 
     result.push($(this).val()); 
    }) 
    return result; 
} 

而這其中,將幫助你知道,如果兩個數組包含相同的元素(這是不一樣的,如果他們是平等的或不被。平等兩者都需要以相同的順序具有相同的鍵。我們不檢查):

function arraysSameElements(array1, array2) { 
    if(array1.length == array2.length) { 
     for(var i in array1) 
      if($.inArray(array1[i], array2) == -1) 
       return false; 
     return true; 
    } 

    return false; 
} 

有了這個,現在你可以做這樣的事情:

if (arraysSameElements($("form input:checkbox:checked").multipleVals(), ["A","B","C"])) 
    $('.result1').show(value); 
else 
    $('.result1').hide(value); 

$("form input:checkbox:checked")你得到所有選中的複選框(:P)爲form。然後,使用multipleVals將所有的.val()結果放入一個數組中,並將它們與具有需要顯示某個結果或某個結果的答案的陣列數組進行比較。

祝你好運!

+0

謝謝!我想我在這裏理解你的方法,所以只要有空閒時間並希望解決這個問題,我會盡快給你解決。 – 2011-03-16 12:46:16

+0

偉大的:-)希望它有幫助。再見! – 2011-03-16 15:36:46

相關問題