2016-09-24 55 views
0

我在這裏發現了這個腳本,它幾乎可以滿足我的需求(查看div中是否有一個單選按鈕被選中),儘管它提醒我每個單選按鈕,我只需要一個警報,如果其中一個被檢查。檢查一個div內的單選按鈕之一是否被選中

背景信息: 如果選中了一個,我會顯示下一個div。如果不是div不會顯示。在我的系統頂部,單擊一個選中的單選按鈕將取消選中它,然後顯示的div將被隱藏。

我的代碼:

<div class="divtop"> 
    <input type="radio" name="r1" value="v1" /> 
    <input type="radio" name="r1" value="v2" /> 
    <input type="radio" name="r1" value="v3" /> 
<div> 

下面是腳本:

$('.divtop input:radio').live('click', function(event) { 
    var div = $("div.divtop"); 
    var radiobuttons = div.find("input[type='radio']"); 
for (var i = 0; i < radiobuttons.length; i++) { 
    if (radiobuttons[i].type === 'radio' && radiobuttons[i].checked) { 
    alert ('on') // action 
    } else { 
    alert ('off') // action 
}} }); 

我怎麼能適應這個劇本時的單選按鈕中的一個進行檢查,只得到一個警告?

該函數必須是通用的(不使用單選按鈕名稱),因爲它適用於具有不同組的單選按鈕的不同情形。

+2

這是檢查一個奇怪的事情。您將一個函數綁定到單選按鈕的單擊事件。您點擊時只能選擇一個組中的一個單選按鈕,那麼您有什麼意義?換句話說,當*不是*時,點擊一個單選按鈕就意味着選中了一個單選按鈕。 – j08691

+0

@ j08691 - 好吧,它們都可以不加選擇,但它仍然沒有任何意義,因爲至少有一個單擊它會被檢查,之後無論如何都不能全部取消選中它們,所以它總是會是真的嗎? – adeneo

+0

@ adeneo - 除非我們使用舊的重置按鈕。任何人仍在使用它? – j08691

回答

1

您可以檢查是否第一個div已籤電臺,然後顯示另一個分區。

$(document).ready(function(){ 
 
    $('.divtop > input:radio').change(function(){ 
 
     if($(this).is(":checked")) 
 
     { 
 
     $('.divMiddle').removeClass('hide'); 
 
     } 
 
    }); 
 
});
.hide 
 
{ 
 
    display: none; 
 
} 
 
.show 
 
{ 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="divtop"> 
 
    <input type="radio" name="r1" value="v1" />ONE 
 
    <input type="radio" name="r1" value="v2" />TWO 
 
    <input type="radio" name="r1" value="v3" />THREE 
 
<div> 
 
<div class="divMiddle hide"> 
 
    <input type="radio" name="r11" value="v11" /> ONE 
 
    <input type="radio" name="r11" value="v22" /> TWO 
 
    <input type="radio" name="r11" value="v33" /> THREE 
 
</div>

+0

完美!謝謝@loading ...以及如果單選按鈕返回到取消選中狀態,我將如何再次隱藏divMiddle? – Sergelie

+0

@ user3371049請參閱我已將default class hide class添加到divMiddle div中,如果要隱藏,則只需添加該類,否則僅刪除該類。 –

+0

完美的解決方案!非常感謝@loading ... – Sergelie

0

在回答關於自己信息的評論,它發生在我,你可以實現你想要的,只有一些簡單的CSS什麼:

[type="radio"], [type="radio"]:checked + .inner{ 
 
    display:block; 
 
} 
 

 
.inner{ 
 
    display:none 
 
}
<div class="divtop"> 
 
    <input checked type="radio" name="r1" value="v1" /> 
 
    <div class="inner">ONE</div> 
 
    <input type="radio" name="r1" value="v2" /> 
 
    <div class="inner">TWO</div> 
 
    <input type="radio" name="r1" value="v3" /> 
 
    <div class="inner">THREE</div> 
 
<div>

+0

聽起來很聰明,我會試試看! – Sergelie

+0

它運作良好@andrew但我的設置是不同的。在包含3個按鈕的div之後,只有一個帶有class inner的div,並且僅當其中一個按鈕被選中時纔會顯示此div。 – Sergelie

+0

它看起來像用戶正在加載...可能有你的解決方案:) – andrew

相關問題