可在change事件中处理,如果选择重复则保持原有选择不变

由于change事件中拿到的值就是选择后的内容,所以需要存储每个select原来选择的值,JQuery的data()方法可以方便达到效果,同时也可用来标记当前下拉是否选择

示例如下(不考虑初始重复的情况)

    $('select').each(function () {
        $(this).load(url, data, function () {
            // 记录每个下拉初始值
            $(this).data('current', $(this).val());
            // 记录当前是否触发下拉
            $(this).data('onselect', 0);
            // onchange拿到的值已经是修改后的了
            $(this).unbind('change').change(function () {
                $(this).data('onselect', 1);
                // 当前选项已选则回退,否则记录当前已选值供下次选择时回退
                if (!validateSelect(this)) {
                    $(this).val($(this).data('current'));
                } else {
                    $(this).data('current', $(this).val());
                }
                $(this).data('onselect', 0);

            })
        })
    })

    function validateSelect(item) {
        var curr = $(item).val();
        var others = new Array();
        $('select').each(function () {
            if ($(this).data('onselect') === 1) {
                // 不加入当前
            } else {
                others.push($(this).val());
            }
        })
        if (others.indexOf(curr) > -1) {
            alert("选择重复,请重新选择" + curr);
            return false;
        }
        return true;
    }

参考:

http://api.jquery.com/load/

http://api.jquery.com/data/