0

我有两个选择,最初在 Firefox 和 IE8 中都以这种方式呈现:

<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>

到目前为止,只有第一个选择具有从服务器端返回的值,第二个没有。

在文档加载时,我将 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 中,我不知道哪个是哪个,因为在所有情况下都会返回“已选择”。$("#cntctMap_CUST_SEGM_US_RETAIL_SALES_SMA option:selected"));如果我在 IE 中使用,这也是如此,它总是返回一个“选定”选项。

有人知道解决这个问题的方法吗?

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 回答