0

Firefox と IE8 の両方で最初にこの方法でレンダリングする 2 つの選択があります。

<select id="cntctMap_PRSNL_TITL_TXT" >
<option value="Dr.">Dr.</option>
<option value="Ms.">Ms.</option>
<option value="Mrs.">Mrs.</option>
<option selected="" value="Mr.">Mr.</option>
</select>

<select id="cntctMap_CUST_SEGM_US_RETAIL_SALES_SMA"">
<option value="01">Focus</option>
<option value="02">Prospect</option>
<option value="03">Center Of Influence</option>
</select>

これまでのところ、サーバー側から値が返されるのは最初の select だけで、2 番目の select にはありません。

ドキュメントの読み込み時に、2番目の選択のhtmlをプルします。$("#cntctMap_CUST_SEGM_US_RETAIL_SALES_SMA").html());

IE では、返される文字列は次のとおりです。

<option selected value="01">Focus</option><option value="02">Prospect</option><option value="03">Center Of Influence</option>

「selected」属性に注意してください

しかし、Firefox では次のようになります。

<option value="01">Focus</option><option value="02">Prospect</option><option value="03">Center Of Influence</option>

これが私にとって重要な理由は、オプションを追加したいからです。

$("#cntctMapCUST_SEGM_US_RETAIL_SALES_SMA").prepend(selectOption);

そして、ドロップダウンボックスに追加されたオプション値を表示しますが、サーバー側の値を持たない選択に対してのみこれを行いたいです。

IE では、すべての場合に「選択済み」が返されるため、どれがどれであるかわかりません。これは、IE を使用する場合にも当てはまり$("#cntctMap_CUST_SEGM_US_RETAIL_SALES_SMA option:selected"));ます。常に「選択された」オプションが返されます。

誰でもこれを回避する方法を知っていますか?

4

1 に答える 1

0

コメントで説明したように、has-defaultサーバー側の値を持つ選択に特別なクラス (例: ) を追加することをお勧めします。これは、タグをレンダリングするときにサーバー側で行われます。

<select id="cntctMap_PRSNL_TITL_TXT" class="has-default">
<option value="Dr.">Dr.</option>
<option value="Ms.">Ms.</option>
<option value="Mrs.">Mrs.</option>
<option selected="" value="Mr.">Mr.</option>
</select>

<select id="cntctMap_CUST_SEGM_US_RETAIL_SALES_SMA">
<option value="01">Focus</option>
<option value="02">Prospect</option>
<option value="03">Center Of Influence</option>
</select>

...

jQuery を使用すると、サーバー側の値で選択をターゲットにすることができます。

$('select.has-default').prepend(selectOption);

上記のステートメントは、クラスselectOptionを持つ選択の先頭にのみ追加されます。これは、ブラウザーがタグhas-defaultと混ざるかどうかに依存しないため、より一貫性があります。<option>

于 2012-07-30T23:27:03.023 に答える