如何使用jquery禁用低于某个值的下拉选项

时间:2015-06-02 16:15:30

标签: javascript jquery

下面我有一年下拉。

<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,但无济于事。

我做错了什么。欢迎任何帮助/建议。

2 个答案:

答案 0 :(得分:7)

您可以使用filter()来实现此目标:

var year = 2016; // from AJAX...
$('#from_year option').filter(function() {
    return $(this).val() < year;
}).prop('disabled', true);

Example fiddle

答案 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()进行比较。

注意:这也会禁用“选择年份”选项,这可能会或可能不会导致您的问题。