2009-07-21 59 views
2

我在我的MVC窗體上有兩個單選按鈕,用於在表格中隱藏或顯示一行。使用JQuery與RadioButtons來隱藏/顯示錶格行

它在Firefox中正常工作,但不是IE。看來,在IE瀏覽器中,只有當我選擇第一個單選按鈕時纔會觸發JQuery函數。我添加了額外的單選按鈕,以確認它只在第一個時候觸發。

要渲染我的按鈕: <%= Html.RadioButton( 「頻率」, 「每日」)%> 每日

和 <%= Html.RadioButton( 「頻率」,「週刊「)%> 週刊

我的功能是:

$('table#ScheduleTable input#Frequency').addClass("FrequencyOption"); 
$('.FrequencyOption').change(function() { 
    if ($(this).attr('checked') == true & $(this).val() == "Daily") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().hide(); 
    }; 
    if ($(this).attr('checked') == true & $(this).val() == "Weekly") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().show(); 
    } 
}); 

回答

0

我們必須在運行jQuery代碼之前檢查對象的長度。不知道這是否是最好的方式來做到這一點......但它的工作原理和我們已經花費了足夠的時間! ;)

Thansk的所有幫助。

0

如果我們能夠看到HTML源代碼,這將有所幫助。

可能是因爲您的兩個輸入都有id="Frequency"。一個id在頁面上應該是唯一的(即只有一個頁面上的項目可以有id="Frequency")。

1

試試這個

$('table#ScheduleTable input[id^="Frequency"]').change(function() { 
    if ($(this).attr('checked') == true & $(this).val() == "Daily") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().hide(); 
    }; 
    if ($(this).attr('checked') == true & $(this).val() == "Weekly") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().show(); 
    } 
}); 
0

也許如果你使用這個參考方法:

$('input[name=Frequency]').change(function() { 
    if ($(this).attr('checked') == true) 
{ 
    if ($(this).val() == "Daily") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().hide(); 
    } 
    if ($(this).val() == "Weekly") { 
     $('.recurEveryBox').children().show(); 
     $('.weekDayOption').children().show(); 
    } 
} 
}); 
0

從我所看到的,這將導致兩個<input type="radio" id="Frequency" />在頁面上。兩個具有相同ID的東西可能會導致您的錯誤。嘗試消除,如果它確實發生。