2013-08-01 137 views
1

似乎下面的HTML和jQuery事件在Internet Explorer中無法按預期工作。在IE中,每次單擊單選按鈕時都會觸發該事件(即使它是當前選定的一個)。在Chrome中,它工作正常。任何想法的IE修復?即使沒有變化,IE8單選按鈕.change()事件也會觸發

<input id="system-open" type="radio" name="system-closure" value="false" checked="">Open 
<input id="system-close" type="radio" name="system-closure" value="true">Close 
$("input[name=system-closure]:radio").change(function() { 
    alert($(this).val()); 
}) 

回答

2

你可以在數據屬性以前的值存儲包含元素,看看是否選擇實際上已經改變了。試試這個:

<div class="radio-container"> 
    <input id="system-open" type="radio" name="system-closure" value="false" checked="">Open 
    <input id="system-close" type="radio" name="system-closure" value="true">Close 
</div> 
$("input[name=system-closure]:radio").change(function() { 
    var $radio = $(this); 
    var $container = $radio.closest('.radio-container'); 
    var currentValue = $radio.val(); 
    var oldValue = $container.data('old-value'); 

    if (currentValue != oldValue) { 
     // the selection has been changed, do something... 
     alert($(this).val()); 
    } 

    $container.data('old-value', currentValue); 
}) 
+0

感謝您的幫助,它的工作。不過不得不稍微調整它,因爲你第一次點擊同樣的活動單選按鈕時,它仍然發射。我還使用.val()而不是數據,因爲我還不熟悉它。 var oldValue = $(「input [name = system-closure]:radio」)。val();如果(currentValue!= oldValue){ //(「input [name = system-closure]:radio」)。change(function(){ //選擇已經改變,做一些事情...... 警報(「有選擇中更改!」);} 屬性oldValue = CurrentValue的; });' –

+0

我不明白你已經發布什麼 –

+0

試圖使用反引號在我以前的評論中發佈代碼,但沒有奏效。基本上我調整了代碼,以便在更改事件綁定到它之前獲得舊值,否則它仍會觸發。我也用.val替換了.data,因爲我更熟悉這一點。感謝您的解決方案:) –

相關問題