下拉列表只读

时间:2015-03-23 06:28:15

标签: javascript jquery html drop-down-menu

我正在尝试编写一个代码,该代码将使HTML下拉列表只读,但不会#34;禁用"因为我想捕获当前表单中来自上一个表单的默认值。

我已经编写了以下代码,该代码在Chrome中运行得非常好,但在IE中无效。什么可能解决这个问题。

下面是我写的jquery代码。

$("#Q4Q25xP1_1, #Q4Q25xP1_2, #Q4Q25xP1_3, #Q4Q25xP1_4, #Q4Q25xP1_5").each(function(){
                $(this).on("mousedown", function(e){
                                return false;
                }).on("change", function(){
                                $(this).find('option').each(function(i, opt) {
                                    opt.selected = opt.defaultSelected;
                                });
                }).css("background-color","grey");
});

4 个答案:

答案 0 :(得分:1)

试试这个,只需禁用未选中的选项

$("#Q4Q25xP1_1,#Q4Q25xP1_2,#Q4Q25xP1_3").find("option").each(function () {
    if ($(this).attr("selected") != "selected") {
        $(this).attr("disabled", 'disabled');
    }
});

这里是jsfiddle以供参考https://jsfiddle.net/3v0w9n3r/

它适用于所有浏览器,包括IE。

答案 1 :(得分:0)

您可以尝试使用CSS将pointer-events设置为none

<select style="pointer-events:none;">
....

答案 2 :(得分:0)

$("#Q4Q25xP1_1, #Q4Q25xP1_2, #Q4Q25xP1_3, #Q4Q25xP1_4, #Q4Q25xP1_5").each(function(){
      $(this).attr('disabled','disabled');
}

答案 3 :(得分:0)

&#34;变更&#34;事件在浏览器中不一致,在Firefox和Chrome中它可以正常工作 但在IE中需要点击TWICE,首先要删除&#34;不确定&#34;状态,然后再次发起变化事件。所以你需要使用触发点击事件来点击第二次,以便事件初始化和工作。

所以你需要使用trigger mousedown第二次在相同元素上应用mousedown事件而不是改变事件正常工作