下面我有一年下拉。
<select name="from_year" class="col-md-4 form-control" id="from_year">
<option value="0">Select Year</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option selected="selected" value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
现在从ajax电话我得到一年说2016年。现在我想禁用低于2016年的所有选项。我试过以下:
$('select#from_year option:lt('+payment_date[1]+')').prop("disabled", true);
。 。 。其中payment_date[1] = 2016
,但无济于事。
我做错了什么。欢迎任何帮助/建议。
答案 0 :(得分:7)
您可以使用filter()
来实现此目标:
var year = 2016; // from AJAX...
$('#from_year option').filter(function() {
return $(this).val() < year;
}).prop('disabled', true);
答案 1 :(得分:1)
Rory的答案很棒(我赞成它:)),但这里有一个更适合你最初尝试过的东西:
var $group = $("select#from_year");
var iTarget = $group.find("[value='" + payment_date[1] + "']").index();
$group.find(":lt(" + iTarget + ")").prop("disabled", true);
关键区别在于jQuery的:lt()
在其选择器组中运行元素索引,而不是其值。因此,您必须先检索“2016”<option>
的索引,然后才能将其他索引与:lt()
进行比较。
注意:这也会禁用“选择年份”选项,这可能会或可能不会导致您的问题。