2013-04-18 89 views
1

我有倍12:00 AM在两个选择元件通过下午11点45分卸下选择项目,取决于所选项目

都选择具有内部包括文本和值相同的选项。是否有可能例如说我选择了第一次选择的下午1:00以在第二次选择的下午1:00之前删除所有选项?我知道我可以检测到与jquery变化

$('#select1').change(function(){ 

// in here do something to remove previous selects 

}); 

任何帮助将不胜感激。

回答

0

试试这个

$('#select1').change(function(){ 

var value = $(this).val(); 
$("#selectId > option").each(function() { 
    if(value > this.value) 
     $("#selectId option[value=this.value]").remove();  
});  
}); 

但值必须按升序排列的选择框

0

HTML:

<select id="select1"> 
    <option value="1">11h00</option> 
    <option value="2">11h15</option> 
    <option value="3">11h30</option> 
    <option value="4">11h45</option> 
    <option value="5">12h00</option> 
    <option value="6">12h15</option> 
    <option value="7">12h30</option> 
    <option value="8">12h45</option> 
    <option value="9">13h00</option> 
</select> 

<select id="select2"> 
    <option value="1">11h00</option> 
    <option value="2">11h15</option> 
    <option value="3">11h30</option> 
    <option value="4">11h45</option> 
    <option value="5">12h00</option> 
    <option value="6">12h15</option> 
    <option value="7">12h30</option> 
    <option value="8">12h45</option> 
    <option value="9">13h00</option> 
</select> 

JS:

$(document).ready(function(){ 
    $('#select1').change(function(){ 
    var val = $(this).find('option:selected').prop('value'); 

    $('#select2').find('option').show().each(function(){ 
     if($(this).prop('value') <= val){ 
     $(this).hide(); 
     } 
     else{ 
     return false; 
     } 
    }); 
    }); 
}); 
1

这里是另一个同一个wh的版本ERE我们允许用户更改他的第一选择仍然过滤第二选择正确

$(document).ready(function() { 
    var to_mins = function(x) { 
    var p = x.split(':').map(function(v) { return parseInt(v, 10); }); 
    return (p[0] * 60) + p[1]; 
    }; 
    $('#second').data('options', $('#second').find('option').toArray()); 
    $('#first').change(function() { 
    var val = to_mins(this.value); 
    console.log(val); 
    $('#second').empty(); 
    $('#second').data('options').filter(function(v) { 
     return to_mins(v.value) > val; 
    }).map(function(v) { 
     $('#second').append(v.cloneNode(true)); 
    }); 
    }); 
}); 
1

尝试

$('#select1').change(function(){ 
    var $this = $(this); 
    var index = $('option:selected', $this).index(); 
    $('#select2 option').show().filter(':lt(' + index + ')').hide(); 
}) 

演示:Fiddle