2013-09-30 82 views
0

我有這兩個單選按鈕。我想這樣做,所以無論何時用戶選擇一個,那麼jQuery應該顯示包含該按鈕內容的div。示例#paypal具有稱爲#mydivpaypaldiv#payza具有稱爲#mydivpayzadivjQuery - 單選按鈕被選中

每當用戶點擊#paypal時,我只需要顯示#mydivpaypal。隨着#payza

HTML:

<ul class="payment-methods" id="pmethods" style="margin-left:320px;"> 
    <li class="payment-method paypal"> 
    <input name="payment_methods" type="radio" id="paypal"> 
    <label for="paypal">PayPal</label> 
    </li> 
    <li class="payment-method payza"> 
    <input name="payment_methods" type="radio" id="pagseguro"> 
    <label for="pagseguro">PagSeguro</label> 
    </li> 
</ul> 

的jQuery:

var boxes = $('input:checked'); 
$(boxes).each(function() { 
    if($('#paypal').is(':checked')) { 
    $("#mydivpaypal").show(); 
    } 
    if($('#payza').is(':checked')) { 
    $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}); 

我不能得到這個工作。檢查單選按鈕時沒有任何反應。

+0

檢查'divs' ** **的ID,他們不會在你的發佈存在** ** HTML。另外,使用'.each()'的[.change()](http://api.jquery.com/change/)。 – Vucko

+0

我沒有在這個代碼中打印它們。它們確實存在。 – oliverbj

+0

您是否在您的單選按鈕上粘貼onChange或onClick事件? – lastr2d2

回答

0

實際上,代碼無法執行任何操作,因爲使用each時,您正在迭代選中的廣播並最終設置其第一個可見性狀態;沒有任何事件監聽器到您的單選按鈕change事件代碼將不會運行時更改選定的收音機選項。

使用事件變化

說明:綁定的事件處理程序,以「變」 JavaScript事件, 或者觸發元素上的事件。

其次在你的HTML沒有payza ID,但pagseguro,並記住或者隱藏/顯示,根據目前的檢查無線電股利。

代碼:

$('input[name=payment_methods]').change(function() { 
    if ($('#paypal').is(':checked')) { 
     $("#mydivpayza").hide(); 
     $("#mydivpaypal").show(); 
    } 
    if ($('#pagseguro').is(':checked')) { 
     $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}); 

演示:http://jsfiddle.net/IrvinDominin/NVsPj/

0

注:second radio idpagseguro沒有payza

嘗試像,

$('input#paypal').on('click',function() { 
    $("#mydivpayza").hide(); 
    $("#mydivpaypal").show();  
}); 
$('input#pagseguro').on('click',function() { 
    $("#mydivpaypal").hide(); 
    $("#mydivpayza").show(); 
}); 

Fiddle

0

你必須把它下的所有變化事件...種類:

$('input[name=payment_methods]').change(function(){ 
    if($('#paypal').is(':checked')) { 
     $("#mydivpaypal").show(); 
    } 
    if($('#payza').is(':checked')) { 
     $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}) 

這裏是熱做到這一點很好,不久一些更好的主意...對小提琴

$('.payment-method input').change(function(){ 
     $('#'+this.id+'_div').show().siblings().hide() 
    }) 

http://jsfiddle.net/acrashik/Nt7nS/

0

根據您目前的代碼,你沒有任何事件偵聽器等待單選按鈕被點擊。您的代碼只在頁面加載時運行。你只需要添加一個事件監聽器來檢查單選按鈕他們點擊

例如當:http://jsfiddle.net/adambotley/2h8vW/

$(document).ready(function(){ 

    var boxes = $('input:checked'); 
    $(boxes).click(function(){ 
     $(boxes).each(function() { 
      if($('#paypal').is(':checked')) { 
      $("#mydivpaypal").show(); 
      } 
      if($('#payza').is(':checked')) { 
      $("#mydivpaypal").hide(); 
       $("#mydivpayza").show(); 
      } 
     }); 
}); 

通過添加。點擊()監聽器,它會檢查:選中狀態時無線電被點擊