[英]How disable dropdown options based on the previously selected dropdown values which is bigger from another dropdown
$('select').on('change', function(){
$('select option').prop("disabled", false);
$("select").not(this).find("option[value="+ $(this).val() + "]").prop('disabled', true);
});
I have tow drop-down 我有拖曳下拉菜单
<select name="start_year" id="start_year">
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
</select>
<select name="last_year" id="last_year">
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
</select>
I want if i choose 2016 in my first drop-down then 2015 and 2014 should disable in second drop-down. 我想在第一个下拉菜单中选择2016年,然后在第二个下拉菜单中禁用2015年和2014年。
The solution is to disable
options in second select
which whose values are only less then start_year
select value. 解决方案是在第二
select
disable
其值仅小于start_year
选择值的选项。 You have to iterate options
from end_year
select, and set disabled
property only for those which respecting the property: if($(this).val()<value)
. 您必须迭代
end_year
select中的options
,并仅为那些尊重该属性的属性设置disabled
属性: if($(this).val()<value)
。
$('#start_year').on('change', function(){ var value=$(this).val(); $('select option').prop("disabled", false); $("#last_year option").each(function(){ if($(this).val()<value){ $(this).prop("disabled",true); } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="start_year" id="start_year"> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select> <select name="last_year" id="last_year"> <option>Please select...</option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select>
I assume you want this to work both ways. 我认为您希望这两种方式都能起作用。 Select a year in the second dropdown disables the lower starting years in the first dropdown.
在第二个下拉列表中选择年份会禁用第一个下拉列表中的较低起始年份。
If not, just remove the change event bound to #last_year
. 如果不是,则只需删除绑定到
#last_year
的change事件。
It is also prudent to have a default option included, either empty or with some default text. 谨慎选择是否包含默认选项,该选项可以为空或带有一些默认文本。
Using
==
and!=
instead of===
and!==
for type conversion to ensure "0" is equal to 0使用
==
和!=
代替===
和!==
进行类型转换,以确保“ 0”等于0
$('document').ready(function() { $('#start_year').on('change', function() { var $lastYear = $('#last_year option') var startYearValue = this.value; $lastYear.prop("disabled", false); if(startYearValue === 0){ return; } $lastYear.each(function() { if (this.value != 0 && this.value < startYearValue) { $(this).prop("disabled", true); } }) }); $('#last_year').on('change', function() { var $startYear = $('#start_year option') var lastYearValue = this.value; $startYear.prop("disabled", false); if(lastYearValue == 0){ return; } $startYear.each(function() { if (this.value > lastYearValue) { $(this).prop("disabled", true); } }) }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="start_year" id="start_year"> <option value="0"></option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select> <select name="last_year" id="last_year"> <option value="0"></option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select>
jsfiddle , also runnable snippet is below: jsfiddle ,也是可运行的代码段如下:
$('select').on('change', function() { $('select option').prop("disabled", false); var selectedval = $(this).val(); var anotherSelectMenu = $("select").not(this); $.each(anotherSelectMenu.find('option'), function(i, item) { if ($(item).val() < selectedval) $(item).prop('disabled', true); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="start_year" id="start_year"> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select> <select name="last_year" id="last_year"> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.