我正在尝试隐藏并在下拉列表中显示标签,我最初设法在Internet Explorer的所有内容中工作。然后我发现包装需要隐藏在标签中的选项解决了IE问题。但我现在遇到删除它们的问题,因为我编写的代码也删除了它们包含的下拉列表。我做错了什么?这是迄今为止的代码:
function GetMonthsForSelectedYear() {
var selectedYear = $("#DropDownListYear option:selected").text(),
currentYear = (new Date()).getFullYear(),
currentMonth = (new Date()).getMonth() + 1;
$("#DropDownListMonth option").each(function() {
if (selectedYear == currentYear) {
var option = $(this).index();
if (option < currentMonth) {
$(this).wrap('<span>').hide();
}
} else {
$(this).unwrap("<span>").show();
}
});
}
$("#DropDownListYear").change(function() {
GetMonthsForSelectedYear();
});
这是JSFiddle:
感谢。
答案 0 :(得分:1)
$("#DropDownListMonth option[value=" + title + "]").hide();
当您换行<span>
时,它会包裹整个<select>
,而不仅仅是<option>
。这是一种预期的行为。此外,在option
标记内添加optgroup
或select
以外的任何内容都不是正确的方法。
function GetMonthsForSelectedYear() {
var yearOfEntry = $("#DropDownListYear option:selected").text(),
currentYear = (new Date()).getFullYear(),
currentMonth = (new Date()).getMonth() + 1;
$("#DropDownListMonth option").each(function() {
if (yearOfEntry == currentYear) {
var option = $(this).index();
if (option < currentMonth) {
$(this).hide(); // «--------- This one
}
} else {
$(this).show(); // «--------- This one
}
});
}
$("#DropDownListYear").change(function() {
GetMonthsForSelectedYear();
});
答案 1 :(得分:0)
请注意,根据HTML规范(http://www.w3.org/TR/html5/forms.html#the-select-element),<select>
应仅包含<option>
或<optgroup>
或支持脚本的元素。因此,您应该避免使用无效的<span>
包装,而只需删除&amp;恢复您的<option>
元素。
看到这个答案 - https://stackoverflow.com/a/24439289/1766230 - 对此问题 - How to hide a <option> in a <select> menu with CSS?。