简体   繁体   English

如何基于先前选择的下拉菜单值禁用下拉菜单选项,该值大于另一个下拉菜单

[英]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.

相关问题 如何根据多选下拉菜单中先前选择的下拉值禁用下拉选项? - how to disable dropdown options based on the previously selected dropdown values in multi select dropdown? 使用jQuery或JavaScript基于先前选择的下拉值禁用下拉选项? - disable dropdown options based on the previously selected dropdown values using jquery or javascript? Angular-如何根据在另一个下拉列表中选择的选项禁用一个下拉列表中的选项? - Angular-How can I disable options from one dropdown based on option selected on another dropdown? AngularJS禁用以前选择的下拉选项 - AngularJS disable dropdown option which previously selected 如何根据另一个下拉列表禁用下拉列表中的值 - How to disable values in a dropdown according to another dropdown 如何从下拉菜单中删除除从另一个下拉菜单中选择的一个之外的所有值 - How to remove all values from dropdown except one which is selected from another dropdown 根据另一个下拉菜单的选定值生成下拉菜单选项 - Generate the dropdown options based on selected value of another dropdown jQuery根据其他下拉列表的选定值禁用其他下拉列表值 - jQuery disable other dropdown values based on selected value of other dropdown 如何基于所选下拉列表中的值启用和禁用表单控件 - How to Enable and Disable Form Controls based on values in selected dropdown list Gravity Forms - 如何根据在另一个下拉字段中选择的值隐藏下拉定价字段中的某些选项 - Gravity Forms - How to Hide Some Options in a Dropdown pricing Field based on Value selected in Another Dropdown field
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM