如何使用jquery在下拉列表中添加/删除值

时间:2012-09-04 19:40:33

标签: jquery

我有两个具有相同值的下拉列表,这些值由数据库值填充。我试图解决的问题是,提交表单时,2个下拉框不能具有相同的值。 POST值必须不同。

如果用户从下拉框A中选择选项A,我想从下拉框B中删除选项A.如果用户然后从下拉框A中选择选项B,我希望将选项A放回到下拉框中框B和要从下拉框B中删除的新值选项B.

我尝试了几种不同的方法,最接近的是以下代码。 当页面加载时,这个位做我想要的......

$(document).ready(function() {
    $.dropdownAcache = { 
        val : "",
        val1 : "",
    };

    $('#id_A').ready(function() {
        var optionval = $('#id_A').val();
        $.dropdownAcache.val = $('#id_A').val();
        $('#id_B > option[value=' + optionval + ']').remove();
    });

    $('#id_A').click(function() {
        var optionval = $('#id_A').val();
        $.dropdownAcache.val1 = $('#id_A').val();
        $('#id_B > option[value=' + optionval + ']').remove();
        $('#id_B').append$(dropdownAcache.val);
        $.dropdownAcache.val = $.dropdownAcache.val1;
    });

....但它似乎所做的就是从下拉框B中删除值但是从不将值重新添加。实际上它很滑稽,因为我在下拉框B中没有任何值,但是严肃地说可以有人帮忙搞定这个吗?

干杯 - 奥利

1 个答案:

答案 0 :(得分:1)

您应该使用的事件是'更改'事件。此外,您不需要第二个.ready()回调,它没有用处(第一个.ready()句柄)

$.dropdownAcache = { 
    val : "",
    val1 : ""
};

$(document).ready(function() {

    var optionval = $('#id_A').val();
    $.dropdownAcache.val = $('#id_A').val();
    $('#id_B > option[value="' + optionval + '"]').remove();

    $('#id_A').change(function() {
        optionval = $('#id_A').val();
        $.dropdownAcache.val1 = optionval;
        $('#id_B > option[value="' + optionval + '"]').remove();
        $('#id_B').append( $.dropdownAcache.val );
        $.dropdownAcache.val = $.dropdownAcache.val1;
    });
});

(至于为什么你的列表永远不会得到添加的值,你有一个不幸的错误放置错误.append$(dropdownAcache.val);