禁用选择器中的选项,使其无法删除

时间:2013-09-24 02:48:42

标签: javascript jquery

另一个新的问题所以请光临我。我有一个看起来像这样的选择器:

<select id="patientSelect">
    <option disabled selected style='display: none;' id="patient0">
        Incoming Patients</option>
    <option id="patient1"></option>
    <option id="patient2"></option>
</select>

因为我想要选择器的占位符类型文本(即第一个选项)。并且使用我的javascript我想要它,以便如果所选的选项是patient1并且您点击了一个按钮它将被删除并且将返回显示残疾的'入境患者'的事情。 javascript:

$(".ui-btn").click(function(){
   remove();
   $('#patientSelect :selected').attr('selected', '0');
   $('#patientSelect').change();
});

function remove(){
   var x = document.getElementById("patientSelect");
   x.remove(x.selectedIndex);
}

问题是它总是删除多个选项,所以如果我摆脱“patient2”并尝试运行remove(),列表就会变成一个很长的空白列表。所有帮助表示赞赏,请不要太苛刻。 :P

修改 对不起,基本上我想要永远删除文本'Incoming Patients'(这是我的选择器的第一个选项)。无论函数remove()'尝试运行多少次。它可以删除其他选项,只是从来没有第一个。 这可能是不可能的,我不确定.. 如果还有另一种方法可以将文本放到选择器上而没有选项,那也很好: - )

可能是这样的:

function remove(){
   if(option != 1){
      var x = document.getElementById("patientSelect");
      x.remove(x.selectedIndex);
   }
}

2 个答案:

答案 0 :(得分:1)

尝试

var $ps = $('#patientSelect');
$(".ui-btn").click(function () {
    var $sel = $ps.find('option:selected')
    if ($sel.index() > 0) {
        $sel.remove();
        $ps.val($ps.find('option:eq(0)').val())
    }
});

演示:Fiddle

答案 1 :(得分:1)

你可以尝试一下。

$(".uibtn").click(function(){
   remove();
   $('#patientSelect').append("<option disabled selected style='display: none;' id='patient0'>Incoming Patients</option>");
   $('#patientSelect').change();
});

function remove(){
   var x = document.getElementById("patientSelect");
   x.remove(x.selectedIndex);
}

选中此http://jsfiddle.net/7yR5V/