使用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提供所有帮助。