2012-02-16 331 views
4

我的單選按鈕上有一個點擊監聽器。如何檢查一個單選按鈕是否已被點擊後被選中?

我需要檢查一個單選按鈕是否已在點擊之前檢查過,或者它是否沒有。

$('.GridRadio').live('click', function() { 
    alert($(this).is(':checked')); 
}); 

但是,上述警告每次都是正確的。如何在點擊之前查看它是否已被檢查?

+0

您可以訂閱改變,而不是點擊,你知道的方式它沒有被檢查過,但你不會觸發事件時,你點擊已被檢查的事件 - http://jsfiddle.net/AXfdy/ – 2012-02-16 09:58:19

+0

NB:恕我直言,如果你需要這樣做,那麼你的東西有問題GUI概念。 – RoToRa 2012-02-16 09:58:49

回答

5

你可以使用data()存儲電臺的前值,然後檢查針對當前值:

$(".GridRadio").click(function() { 
    var lastValue = $(this).data("last-value"); 
    var value = $(this).val(); 

    if (lastValue == value) { 
     alert("Already checked"); 
    } 
    else { 
     alert("Not previously checked"); 
    } 

    $(".GridRadio").data("last-value", ""); 
    $(this).data("last-value", value); 
}); 

Example fiddle

如果設置了checked屬性上的無線電中的一個HTML在頁面加載時,添加此代碼以設置該特定的data

$(".GridRadio:checked").data("last-value", $(".GridRadio:checked").val()) 
+0

如果它從未被點擊過,但是被設置爲在html中檢查,該怎麼辦? – 2012-02-16 09:56:21

+0

@RichardD好點 - 我已經更新了答案和小提琴 – 2012-02-16 09:59:09

+0

似乎是最好的解決方案,+1 – 2012-02-16 10:02:28

0

如果您使用的是live,則可能在$(document).ready之後附加$('.GridRadio')。如果這是正確的 - 你可以做這個檢查,當你追加它。 然後當它被點擊 - 它將永遠是負值。

(如果它是從一開始的頁面 - 你可以這樣做檢查,一旦重新加載頁面,有人點擊它。)

相關問題