繁体   English   中英

如何使用jQuery禁用选择框中的非选定选项?

[英]How to disable non selected options in select boxes using jQuery?

我在Laravel中有一个可以用动态表单编辑的模型,但我想阻止更改选择框中的选定选项,所以当我打开编辑页面时,我应该能够看到包含所选项目的选择框,但所有其他选项应该是禁用。

也许我可以用jQuery选择所有select并禁用所有未选择的值? 怎么做?

我试过这个:

// disable non selected items
$('select').each(function(){
    $('option').each(function() {
        if(this.selected) {
            this.attr('disabled', true);
        }
    });
});

但它不起作用,我只需要一些帮助

这是选择框,其他所有都是相同的:

<select name="car">
  <option selected="selected" value="1">Volvo</option>
  <option value="2">Saab</option>
  <option value="3">Mercedes</option>
  <option value="4">Audi</option>
</select>

只选择其他值

您的代码有两个问题。

首先 :您应该检查是否未选择选项( !this.selected )然后禁用它。

第二this.attr('disabled', true)在jQuery中不起作用。 你应该使用$(this)代替。

$('select').each(function(){
    $('option').each(function() {
        if(!this.selected) {
            $(this).attr('disabled', true);
        }
    });
});

 $('select').each(function(){ $('option').each(function() { if(!this.selected) { $(this).attr('disabled', true); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="car"> <option selected="selected" value="1">Volvo</option> <option value="2">Saab</option> <option value="3">Mercedes</option> <option value="4">Audi</option> </select> 

请注意,代码中的第一个.each()循环是额外的。 底部代码就足够了。

$('option').each(function() {
  !this.selected ? $(this).attr('disabled', true) : "";
});
   $(function(){
        var Obj=$('select').find('option');
          $.each(Obj,function(){
           $(this).is(":selected") ? "" :$(this).attr('disabled',true);
          });
     });

您可以用“$(this)”替换“this”并添加“!” 在if和它可以工作:

$('select').each(function(){
    $('option').each(function() {
        if(!$(this).selected) {
            $(this).attr('disabled', true);
        }
    });
});

好的,我不确定你想做什么,但我可以为你修复你的第一个代码片段:

// disable non selected items
$('select').each(function(){
    $('option').each(function() {
        if(!this.selected) {
            $(this).parent().attr('disabled', true);
        }
    });
});

这只是其他人的更新:

我找到了(对我来说更好的解决方案) https://silviomoreto.github.io/bootstrap-select/examples/#disabled-select-box

使用此插件,您可以将选择框设置为禁用,然后您可以看到之前选择的内容,您无法更改它。

只需在视图中加载插件并添加类.selectpicker并将选择框设置为禁用,它看起来像这样:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM