3

ドロップダウンリストでタグを非表示および表示しようとしていますが、最初は 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があります:

http://jsfiddle.net/MGGh9/1/

ありがとう。

4

2 に答える 2

2

代わりに、これを使用できます:

$("#DropDownListMonth option[value=" + title + "]").hide();

をラップすると、それだけでなく<span>全体がラップされます。そして、これは予期される動作です。さらに、タグ以外またはタグ内に何かを持つことは正しい方法ではありません。<select><option>optionoptgroupselect

あなたのコードで:

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

フィドル: http://jsfiddle.net/MGGh9/2/

また、確認してください:

  1. CSSで<select>メニューの<option>を非表示にする方法は?
  2. JavaScript で選択オプションを非表示にするにはどうすればよいですか? (クロスブラウザ)
于 2012-11-29T11:06:11.867 に答える
0

HTML 仕様 ( http://www.w3.org/TR/html5/forms.html#the-select-element ) によると、 a にはまたはスクリプトをサポートする要素<select>のみを含める必要があることに注意してください。したがって、無効なラッパーの使用を避け、代わりに要素を削除して復元する必要があります。<option><optgroup><span><option>

この回答を参照してください - https://stackoverflow.com/a/24439289/1766230 - この質問へ - How to hide a <option> in a <select> menu with CSS? .

于 2014-06-26T20:17:28.180 に答える