Jquery - Jquery 2下拉列表,从第二个列表中删除第一个选定的选项

时间:2015-03-06 17:59:56

标签: jquery selection dropdownbox

我使用此代码允许我从下拉列表1中选择一个条目,并从下拉列表2中删除相同的条目。

$("#BoxName").change(function(){
    var selectedItem = $(this).val();   
    var nextDropdown = $(this).parent("td").next("td").find("select.BoxComparisonClass");

    $(nextDropdown).find("option").show();
    $(nextDropdown).find("option:[value="+selectedItem+"]" ).hide();
})

这可以在这里工作: http://jsfiddle.net/8kvesskv/5/

这适用于Chrome& Firefox但不在Internet Explorer& Safari浏览器。

任何方式我都可以在所有四种浏览器中使用它?

如果没有其他方法可以做到这一点?

由于

**更新** 这似乎适用于IE。不是隐藏它而是禁用,这对我来说应该有用。

$("#BoxName").change(function () {
    var selectedItem = $(this).val();
    var nextDropdown = $(this).parent("td").next("td").find("select.BoxComparisonClass");

    $(nextDropdown).find("option").attr('disabled', false);
    $(nextDropdown).find("option:[value=" + selectedItem + "]").attr('disabled', true);

})

唯一的问题是,当行重复时,禁用的值也会重复。如何复制行,但新行中的所有选项都可用?

更新

将以下代码添加到我的代码中似乎有效:

$newRow.find('*').andSelf().removeAttr('id').removeAttr('disabled');

1 个答案:

答案 0 :(得分:0)

禁用选项有效,而不是隐藏它们。

$("#BoxName").change(function () {
    var selectedItem = $(this).val();
    var nextDropdown = $(this).parent("td").next("td").find("select.BoxComparisonClass");

    $(nextDropdown).find("option").attr('disabled', false);
    $(nextDropdown).find("option:[value=" + selectedItem + "]").attr('disabled', true);

})