根据optgroup不在IE中更新选择选项

时间:2013-11-25 22:43:18

标签: jquery html internet-explorer

我为客户构建了一个自定义商店前端,他的select下拉菜单更新时出现问题。我说他是因为它在现代浏览器甚至是IE7 +中对我的预期效果如此,所以我不太确定如何解决这个问题。

当用户更改产品下拉列表时,交付选项下拉列表会更新以反映该产品的选项。他看到的问题是它根本没有改变选项(这使得结账失败 - 我知道,我正在研究非JS / JS失败的后备,但我想得到JS版本也工作。)

这是我的下拉列表的(截断的)HTML:

<select id="product" name="product">
    <option value="1">3 Man Chess Primary Set includes FREE shipping in Contiguous USA. [ $49.95 ]</option>
    <option value="999">Digital Download [ $0.99 ]</option>
</select>

<select id="location" name="location">
    <optgroup label="3 Man Chess Primary Set includes FREE shipping in Contiguous USA." id="1">
        <option value="1">Contiguous U.S.A.  (UPS Ground)</option>
        <option value="2">Alaska &amp; Hawaii (Priority Mail)</option>
        <option value="3">Canada (Priority Mail)</option>
    </optgroup>
    <optgroup label="Digital Download" id="999">
        <option value="50">E-mail</option>
    </optgroup>
</select>

我遍历select的optgroups并将每个中的HTML设置为一个由ID命名的变量(这是更改的内容)。产品ID和位置optroup ID匹配。

var amtList = Array {

    [ ... ]

    optgroups: Array[1000] {
        1: "<option value="1">Contiguous U.S.A.  (UPS Ground)</option>
            <option value="2">Alaska &amp; Hawaii (Priority Mail)</option>
            <option value="3">Canada (Priority Mail)</option>"
       999: "<option value="50">E-mail</option>"
}

这是实际进行切换的代码:

$("#product").change(function(){
    $("#location").html( amtList["optgroups"][ $(this).val() ] );
});

这是他给我的规格,他说这些规格不起作用。我让他运行Enable JavaScriptWhatBrowser个网站来获取规格。

  

ipad已启用JavaScript&amp; Safari Mobile 5(我故意不进行升级,因为新版本会在旧版本中找到我需要的东西)。 [确实加载但很慢]

     

XP旧办公室电脑启用了JavaScript&amp; IE7 [永不加载]

     

我的HP win 7双proc 64位已启用JavaScript&amp; IE9 [永不加载]

     另一台XP双进程64位计算机,但只有32位XP Home   JavaScript启用&amp; IE8 [永不加载]

为什么它不会更新这些机器上的菜单的任何想法 - 是否存在一些我缺少的向后兼容性问题?似乎在我所有的现代浏览器上都能正常工作(IE11在IE7-10模式下的开发对我来说似乎都很好。)

jsFiddle:http://jsfiddle.net/daCrosby/pTKL5/1/

直播网站:http://3manchess.com/

1 个答案:

答案 0 :(得分:0)

在代码中留下console.log次调用可能会导致在未安装任何console的浏览器中抛出错误。这将包括IE7和IE8,除非用户安装了所有IE版本都没有的开发人员工具

有许多可用的包装器或填充程序可以添加到代码中,以检查console是否存在,如果没有错误处理它