【问题标题】:If option is selected in one multiselect, set it to disabled in another dropdown如果在一个多选中选择了选项,请在另一个下拉列表中将其设置为禁用
【发布时间】:2011-03-15 20:45:53
【问题描述】:

这段代码有什么问题?我有一个多选(VendorIDs)和一个选择(vendorDropDown)。我想在 vendorDropDown 中将 VendorIDs 中的所有选定项目设置为禁用。这不起作用:

            $('#Vendor_IDs :selected').each(function (i, selected) {
                var v = $(selected).val();
                $("#vendorDropDown option[value='" + v + "']").attr("disabled", true);
            });

但是,这样做:

            $('#Vendor_IDs :selected').each(function (i, selected) {
                var v = $(selected).val();
                alert(v);
                $("#vendorDropDown option[value='" + v + "']").attr("disabled", true);
            });

添加警报有何改变?

【问题讨论】:

标签: jquery select each multi-select


【解决方案1】:

看起来var v = $(selected).val(); 执行时间过长,无法按时执行下一行。试试这个:

 $('#Vendor_IDs :selected').each(function (i, selected) {
     $("#vendorDropDown option[value='" + $(selected).val() + "']").attr("disabled", true);
 });

这样,第二行不依赖于执行时间过长的第一行。让我知道它是否有效。

-已编辑,第二次尝试!-

 $('#Vendor_IDs :selected').each(function() {
     $("#vendorDropDown option[value='" + $(this).val() + "']").attr("disabled", true);
 });

【讨论】:

  • 我以前也是这样,但添加了额外的行来诊断。我认为您的回答使我遇到了问题。我认为下拉人口可能还没有完成执行......
  • 嗯,奇怪。尝试使用 .each(function() { $('#vendor opt'+ $(this).val();} 而不是 .each(function(i, selected)。让我们保持最新状态。-edit- 编辑了我的答案
  • 就是这样。将我的代码放在填充下拉列表的 .post 中,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多