0

フィルタリングされているドロップダウンリストがあります(例..(toggleOptionVisibilityはオプションの周りにスパンを配置し、trueの場合、スパンが表示されます)):

case 'Actimel drank naturel':
            $(eenheid + ' option[value="101"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="102"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="103"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="116"]').toggleOptionVisibility( true );
            break;
case 'Roosvicee multivit (siroop)':
            $(eenheid + ' option[value="101"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="102"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="103"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="104"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="111"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="116"]').toggleOptionVisibility( true );
            break;

フィルタリングは機能しますが、私のやり方の例を示しているだけです。

問題は、フォームを送信するときに選択したものは何でも、selected="selected" はユーザーが選択したものです (IE で動作します) が、ドロップダウンリスト自体は Firefox で最後から 2 番目の値を表示し、最後の値を表示します。クロムで。

selected="selected" は、firefox や chrome でも、ユーザー入力のままです。

そして、これが私の質問です。なぜこれが起こっているのか、なぜChrome / firefoxではなくIEで機能するのか知っていますか?

みんなコードが好きなので、もう少し投稿します。

$(eenheid + ' option').toggleOptionVisibility( false );

フィルタリングされる前にすべてのオプションを非表示にして、フィルタリングされたオプションのみが表示されるようにします。

4

2 に答える 2

1

<span>周りの<option>議論のために:

interface HTMLSelectElement : HTMLElement {
    ...
    readonly attribute HTMLCollection selectedOptions;
    ...
};

selectedOptions互換性を最大限にするには、<option>またはのリストである必要があります。<optgroup>使用禁止ではありません<span>、自己責任でお願いします。

http://www.w3.org/TR/html5/forms.html#the-select-elementを参照

于 2013-06-05T13:38:45.050 に答える
0
$('select option[value="..."]').toggleOptionVisibility(false);
$('select').val($('#select-test > option:first'));

選択した値を取得するには:

$('select option:selected').val()

例: http: //jsfiddle.net/d3FuV/5/

于 2013-06-05T11:46:57.257 に答える