JavaScript:隐藏下拉列表中除一个之外的元素

标签 javascript jquery html

我有这个代码:

$("#country").change(function() {
  if ($(this).data('options') === undefined) {
    $(this).data('options', $('#street option').clone());
  }
  var id = $(this).val();
  $('#street').prop('disabled', false);
  var options = $(this).data('options').filter('[class=' + id + ']');
  $('#street').html(options);
});	
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="country" id="country">
	<option  disabled selected>Select ...</option>
	<option value='1'>Country_one</option>
	<option value='2'>Country_two</option>
	<option value='3'>Country_three</option>
	<option value='4'>Country_four</option>
</select>

<select disabled class="js-select2"  name="street" id="street">
	<option disabled selected>Select a Street ...</option>
	<option class='1' value='1'>Street_one</option>
	<option class='1' value='2'>Street_two</option>
	<option class='1' value='3'>Street_three</option>
	<option class='1' value='4'>Street_four</option>
    <option class='2' value='5'>Street_five</option>
	<option class='2' value='6'>Street_six</option>
	<option class='3' value='7'>Street_seven</option>
	<option class='3' value='8'>Street_eight</option>
	<option class='3' value='9'>Street_nine</option>
	<option class='3' value='10'>Street_ten</option>
	<option>Street not found</option>
</select>

当我从第二个下拉列表中的country更改选项时,我需要保留Select a Street ...选项,而当我选择Country_four时> 在第二个下拉列表中仅出现选项未找到街道

最佳答案

向您的选择选项“选择街道”添加了一个类default,并添加到.filter(),以便始终选择它

添加了 if/else 来检查所选值 - 如果不是 4;重建选项,并启用选择。如果是4;清空选项,添加“未找到街道”选项,然后禁用选择。在这两个选项之后,我们选择第一个选项,这样我们总是首先显示正确的消息

$('#country').on('change', function() {
  // Stores the intial Options into a Data-attribute
  if ($(this).data('options') === undefined) {
    $(this).data('options', $('#street option').clone());
  }

  if ($(this).val() !== '4') {
    // Fetches the Options from data, and filters for match & default option
    let id = $(this).val();
    let newOptions = $(this).data('options').filter(`[class="${id}"], [class="default"]`);
    $('#street')
      .empty()
      .append(newOptions)
      .prop('disabled', false)
  } else {
    // Creates an Option, containing only text
    let newOptions = $('<option></option>').text("Street not found");
    $('#street')
      .empty()
      .append(newOptions)
      .prop('disabled', true)
  }
  
  // Selects the first Option in the Select
  $('#street')[0].selectedIndex = 0
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="country" id="country">
  <option disabled selected>Select ...</option>
  <option value='1'>Country_one</option>
  <option value='2'>Country_two</option>
  <option value='3'>Country_three</option>
  <option value='4'>Country_four</option>
</select>

<select disabled class="js-select2" name="street" id="street">
  <option class="default" disabled selected>Select a Street ...</option>
  <option class='1' value='1'>Street_one</option>
  <option class='1' value='2'>Street_two</option>
  <option class='1' value='3'>Street_three</option>
  <option class='1' value='4'>Street_four</option>
  <option class='2' value='5'>Street_five</option>
  <option class='2' value='6'>Street_six</option>
  <option class='3' value='7'>Street_seven</option>
  <option class='3' value='8'>Street_eight</option>
  <option class='3' value='9'>Street_nine</option>
  <option class='3' value='10'>Street_ten</option>
  <option>Street not found</option>
</select>

关于JavaScript:隐藏下拉列表中除一个之外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59595067/

相关文章:

javascript - 如何使用谷歌图表库将圆环图元素平滑地旋转到底部位置(270度或负y轴)

html - 带有滚动条的两列元素

javascript - Knockout.Mapping 和 EcmaScript 5 已设置

javascript - 多浏览器窗口拖放界面

javascript - 在 Python 中调用匿名函数而不将它们分配给变量

JavaScript RegExp 不针对字符串的所有实例

javascript - 在 Angular JS 的 uri 参数中使用 'slash' 字符使用 Restful 服务

javascript - 使用 JavaScript 在输入字段中写入字符时自动建议

javascript - jqPlot 饼图无法正确渲染

html - 有没有办法使用文本作为 CSS 的背景?