使用JavaScript填充SELECT选项在Chrome和IE 11中失败,适用于Firefox

时间:2014-01-28 19:14:07

标签: javascript google-chrome firefox internet-explorer-11 selectedindex

我有一个指定值的下拉列表,当用户更改该值时,会警告他们这样做。如果他们单击“确定”,则下拉列表中的文本会更改。如果他们单击“取消”,则所选选项将恢复为原始选择。这在Firefox中完美运行,但如果用户在Chrome和IE中选择“取消”,则会删除下拉文本,但会保留该值。如果用户单击“确定”,则它也适用于所有浏览器。是否有IE和Chrome特定的东西,我需要使用下面标记的行,以使其跨浏览器工作?

(我正在使用原型库)

在Select标记中使用onChange="typeChange(this)"调用的JavaScript函数:

function typeChange(element) {

     var oldValue = element.defaultValue;
     var newValue = element.value;
     var oldDisplayValue=jQuery('select[name="type"] option').map(function() { 
                 if (jQuery(this).attr('defaultSelected')==true) 
                      return this }).get(0).text;
     var newDisplayValue = element.options[element.selectedIndex].text

        if (window.confirm('Are you sure?)) {
        element.defaultValue = newValue;
        element.options[element.selectedIndex].text = newDisplayValue;
       } else {
        element.value = element.defaultValue;
        ***element.options[element.selectedIndex].text = oldDisplayValue;***  
       }
}

1 个答案:

答案 0 :(得分:0)

您应该设置selectedIndex,这是实现此目标的更可靠方法。你需要遍历这些项目以找到你正在寻找的那个的索引,这篇文章将帮助你:

JavaScript - How to set selectedIndex of select element using display text?