javascript - 根据在另一个选择下拉列表中选择的值禁用一个选择下拉列表中的选项值

标签 javascript jquery

我有一个带有两个选择下拉列表的表单。第一个是开放时间,第二个是关闭时间。所以当用户选择打开时间时,关闭时间不能早于这个时间。

我的 Jquery 会禁用所有第二个下拉值,而不是仅禁用较早的时间,如下所示:JSFiddle .

    $('#open').change(function(){
        if($('#close').val()<$('#open').val()){
            $('#close').prop('disabled', true);           
        };
    })    

如何获得我想要的行为?

最佳答案

试试这个(这里是 updated jsfiddle ):

$('#open').change(function(){
    var that = $(this);

    $('#close option').each(function() {
        if($(this).val() < that.val()) {
            $(this).prop('disabled',true);   
        } else {
            $(this).prop('disabled',false);   
        }
    });
});    

它适用于 Chrome 36,但不适用于 Firefox(除了这两个浏览器之外,尚未测试过任何浏览器)。

由于此行为不可靠,您可以尝试根据第一个 select 元素中选择的内容,向第二个 select 元素动态添加选项。

编辑

查看此jsfiddle基于你原来的 fiddle 。它可以让您动态填充第二个 select 元素。

var vals = ['00.00', '00.15', '00.30', '00.45', '01.00', '01.15', '01.15'];

for(var i = 0; i<vals.length; i++) {
    $('#open').append('<option val="'+vals[i]+'">'+vals[i]+'</option>');   
}

$('#open').change(function(){
    $('#close').html('');

    for(var i = 0; i<vals.length; i++) {
        if(vals[i] >= $(this).val()) {
            $('#close').append('<option>'+vals[i]+'</option>');
        }
    }
}).change();

关于javascript - 根据在另一个选择下拉列表中选择的值禁用一个选择下拉列表中的选项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352733/

相关文章:

javascript - 将数组发送到 PHP Web 服务并从 MySQL 数据库返回数组

javascript - 使用 Math.random 生成随机大小的二维图像?

javascript - 在Javascript中计算二次曲线上任意点的切线斜率

javascript - 如何使用 jasmine 对 jquery ajax 调用进行单元测试?

jquery - Bootstrap - 按钮切换无法正常工作

javascript - 启用/禁用输入元素的脚本?

javascript - 如何在 TSX 中将值从子组件传递给父组件?

jQuery Progressbar文本隐藏Progressbar的动画

javascript - 如何从数组中删除随机项,然后将其从数组中删除直到数组为空

javascript - HTML5 Canvas 跟随鼠标效果jquery