2013-11-26 57 views
1

更改函數僅在收音機被選中時捕獲,但在未選中時收不到。爲什麼?它應該如此嗎?當我點擊單選按鈕時,另一個不變,所以事件應該會觸發,對吧?以下是代碼和jsfiddle。我做錯了什麼嗎?更改事件如何在單選按鈕上工作

HTML:

Option1 <input type="radio" name="choice" id="op1" checked/> 
Option2 <input type="radio" name="choice" id="op2"/> 
<br><br> 
<span id="sp1">Option1</span><br> 
<span id="sp2" style="display: none;">Option2</span> 

的Javascript:

var op2 = $('#op2'); 
var sp1 = $('#sp1'); 
var sp2 = $('#sp2'); 

op2.change(function(){ 
    if(op2.is(':checked')){ 
     sp1.hide(); 
     sp2.show(); 
    } 
    else{ 
     sp2.hide(); 
     sp1.show(); 
    } 
}); 
+0

是您的問題爲什麼當無線電輸入變爲未選中時,更改事件不會被觸發? – j08691

+0

@ j08691我相信是這樣,我不熟悉這一點,任何智慧的話語? – Jasper

+0

@ j08691是的確切 – biox

回答

1

得到它使用名稱

$("input[name='choice']").change(function(){ 
    if(op2.is(':checked')){ 
     sp1.hide(); 
     sp2.show(); 
    } 
    else{ 
     sp2.hide(); 
     sp1.show(); 
    } 
}); 

工作樣本http://jsbin.com/UPILuCe/1

+1

好吧,你和Jasper都回答工作(謝謝你們),但你先回答,我更喜歡「名字」的解決方案。 – biox

2

你可以運行你的前夕更改您的選擇NT處理程序時任複選框改變:

$('#op2, #op1').change(... 

這裏有一個演示:http://jsfiddle.net/TCt82/

另一種方式來選擇,這將是由元素name因爲這兩個複選框需要具有相同的屬性name。通過ID選擇會更快(儘管您無法看到差異)。

UPADTE

如果有人知道確切的原因,它已經取消選擇後change事件不會在一個複選框火,張貼它的評論或回答將是巨大的。

相關問題