2017-02-06 82 views
0

我有三个选择,我专门使用复选框,铜牌,银牌和金牌。当有人点击其中一个复选框选项时,我希望select中的结果不同,这取决于if语句中的选项。然后,一旦该人选择并选择能够将值发送给html。更改选项输入与不同的复选框选项

现在,我只得到#top-bronze:checked选项出现,无论我检查哪个选项。但是,由于某些原因,这段代码并未显示。

有没有人看到我需要做什么才能获得正确的选项来显示基于检查结果?

function tpYears() { 
 

 
     if ('#tp-bronze:checked') { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='3'>3 years - 3 cards</option><option value='4'>2 years - 4 cards</option><option value='2'>5 years - 2 cards</option>"); 
 
     } else if ('#tp-silver:checked') { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='5'>3 years - 5 cards</option><option value='3'>5 years - 3 cards</option><option value='2'>7 years - 2 cards</option>"); 
 
     } else if ('#tp-gold:checked') { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='7'>3 years - 7 cards</option><option value='4'>5 years - 4 cards</option><option value='3'>7 years - 3 cards</option>"); 
 
     } 
 
     var templates = $('#tp-frequency option:selected'); 
 
    }; 
 
    tpYears();
<label for="tp-bronze" class="package-check-toggle tp-package-push">Bronze 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-bronze" value="Bronze Touch Point Package"> 
 
<label for="tp-silver" class="package-check-toggle tp-package-push">Silver 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-silver" value="Silver Touch Point Package"> 
 
<label for="tp-gold" class="package-check-toggle tp-package-push">Gold 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-gold" value="Gold Touch Point Package">

+0

你的if语句字符串没有在$(包装) – T0t3sMcG0t3s

回答

1

环绕中的if-else与$()的条件。您还可以使用道具来检查,如打击firstsecond条件复选框的checked状态

$(function(){ 
 
    $('input[type="checkbox"]').on('change', function() { 
 
     if ($('#tp-bronze').prop('checked')) { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='3'>3 years - 3 cards</option><option value='4'>2 years - 4 cards</option><option value='2'>5 years - 2 cards</option>"); 
 
     } else if ($('#tp-silver').prop('checked')) { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='5'>3 years - 5 cards</option><option value='3'>5 years - 3 cards</option><option value='2'>7 years - 2 cards</option>"); 
 
     } else if ($('#tp-gold:checked')) { 
 
     $("#tp-frequency").html("<option value=''disabled selected>Please choose option</option><option value='7'>3 years - 7 cards</option><option value='4'>5 years - 4 cards</option><option value='3'>7 years - 3 cards</option>"); 
 
     } 
 
     var templates = $('#tp-frequency option:selected'); 
 
    
 
    
 
    }) 
 
}) 
 
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<label for="tp-bronze" class="package-check-toggle tp-package-push">Bronze 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-bronze" value="Bronze Touch Point Package"> 
 
<label for="tp-silver" class="package-check-toggle tp-package-push">Silver 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-silver" value="Silver Touch Point Package"> 
 
<label for="tp-gold" class="package-check-toggle tp-package-push">Gold 
 
</label> 
 
<input type="checkbox" class="tp-pack-check" id="tp-gold" value="Gold Touch Point Package"> 
 
<select id="tp-frequency"></select>

+0

这将导致没有任何显示在我的选择框和你的代码片段显示的选项相同的选项检查? – Paul

+0

更正它,那是因为函数tpYears只被调用过一次,您需要在复选框状态更改时执行该函数。然而,现在发生的情况是,当两个复选框被选中时,具有较低值的复选框会得到优先权,但您可以随时根据需要更改逻辑。 –

+0

我很困惑,为什么我不能运行我的函数名? – Paul