2010-11-30 35 views
3

我想使某個ID只在選擇某種類型的單選按鈕時才激活。以下是我的jQuery代碼:jquery onchange事件現在單選按鈕瞬間

$(document).ready(function() { 
    $('#Type').attr('disabled', 'disabled'); 
    $('input[@name=action]').change(function() { 
    if ($("input[@name=action]:checked").val() == 'SomeKind')    
     $('#Type').removeAttr('disabled'); 
    else 
     $('#Type').attr('disabled', 'disabled'); 
    }); 
}); 

這可按預期工作,但有一個缺陷。當我點擊單選按鈕SomeKind時,它不會立即激活Type,而是我必須再次單擊(頁面上的任意位置)Type才能激活。

我對IE7

+0

您必須在SomeKind單選按鈕上書寫點擊方法以激活/取消激活類型。目前沒有提到你正在改變SomeKind – 2010-11-30 06:22:56

回答

1

如果行動是你的複選框的名稱,然後使用單擊事件,而不是改變,

$('input[@name=action]').click(function() { 
    if (this.checked && $(this).val() == 'SomeKind')    
     $('#Type').removeAttr('disabled'); 
    else 
     $('#Type').attr('disabled', 'disabled'); 
}); 
3

IE7有變化的事件和單選按鈕,改變一些奇怪的問題事件不會觸發,直到出現模糊現象。我遇到了類似的問題一次,經過多次咬牙切齒折齒,發現這一點:

http://norman.walsh.name/2009/03/24/jQueryIE

您可以使用Chinmayee的.click方法(但檢查,並仔細檢查,一切都正常工作時使用鍵盤而不是鼠標),或者你可以添加一個單擊處理程序到你的所有單選按鈕是模糊並重新聚焦:

$(':radio').click(function() { 
    try { 
     this.blur(); 
     this.focus(); 
    } 
    catch (e) {} 
}); 

您只希望IE7的這個噁心雜牌所以你probab想要將它包裝在一個條件註釋中(一個kludge中的一個kludge)。我很確定IE8的單選按鈕有同樣的問題。