使用JQuery和RadioButtons隐藏/显示表行

我的MVC表单上有两个单选按钮,用于隐藏或在表格中显示一行。

它在firefox中工作正常,但不是IE。 似乎在IE中,当我选择第一个单选按钮时,JQuery函数才会被触发。 我添加了额外的单选按钮,以确认它只在第一个时触发。

要渲染我的按钮:每日

和每周

我的function是:

$('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(); } }); 

试试这个

 $('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(); } }); 

如果我们能看到HTML源代码会很有帮助。

这可能是因为您的两个输入都有id="Frequency" 。 一个id在页面上应该是唯一的(即页面上只有一个项目可以有id="Frequency" )。

也许如果你使用这个参考方法:

 $('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(); } } }); 

从我所看到的情况来看,这将导致页面上有两个 。 具有相同ID的两件事可能会导致您的错误。 尝试消除它,如果它确实发生。

我们必须在运行jQuery代码之前检查对象的长度。 不知道这是否是最好的方法…但它有效,我们已经花了足够的时间! ;)

Thansk提供所有帮助。