首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从选定的父值刷新子下拉列表

从选定的父值刷新子下拉列表
EN

Stack Overflow用户
提问于 2018-05-21 06:13:50
回答 1查看 2.4K关注 0票数 1

我是Ruby的新手,因为下面的代码在更改父值之后仍然选择了前面的值,我需要帮助找到解决这个问题的方法:

这是我的JavaScript代码

代码语言:javascript
复制
$(function() {

  var parentFieldId = 'issue_field_72';
  var childFieldId = 'issue_field_73';

  var isTarget = function(child, parent) {

    return child.text().indexOf(parent.text()) == 0;
  }

  var narrowChildField = function() {
    var parentSelected = $('#' + parentFieldId + ' > option:selected');

    $('#' + childFieldId + ' > option').each(function() {

      var child = $(this);
      if (isTarget(child, parentSelected)) {
        child.show();
        child.prop('disabled', false);
      } else {
        child.hide();
        child.prop('disabled', true);
      }
    });
  }
  narrowChildField();
  $('#all_attributes').change(function(e) {
    if (e.target.id == parentFieldId) {
      narrowChildField();
    }
 });

  var _replaceIssueFormWith = replaceIssueFormWith;
  replaceIssueFormWith = function(html){

    _replaceIssueFormWith(html);

    narrowChildField();
  };
});

这是我的HTML代码

代码语言:javascript
复制
<div id="all_attributes" >

<select name="issue[custom_field_values][72]" id="issue_field_72" class="list_cf"><option value="">--- Please select ---</option><option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option></select>

<select name="issue[custom_field_values][73]" id="issue_field_73" class="list_cf">

  <option value="">--- Please select ---</option>

  <option value="A-1" disabled="" style="display: none;">A-1</option>
<option value="A-2" disabled="" style="display: none;">A-2</option>
<option value="A-3" disabled="" style="display: none;">A-3</option>
<option value="B-1" disabled="" style="display: none;">B-1</option>
<option value="B-2" disabled="" style="display: none;">B-2</option>
<option value="B-3" disabled="" style="display: none;">B-3</option>
<option value="B-4" disabled="" style="display: none;">B-4</option>
<option value="C-1" disabled="" style="display: none;">C-1</option>
<option value="C-2" disabled="" style="display: none;">C-2</option>
<option value="C-3" disabled="" style="display: none;">C-3</option>
<option value="C-4" disabled="" style="display: none;">C-4</option>
<option value="C-5" disabled="" style="display: none;">C-5</option>
<option value="C-6" disabled="" style="display: none;">C-6</option></select>

</div>

输出

当您看到输出时,我需要这个javascript代码的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2018-05-21 07:32:30

您必须实现两个隐藏选项列表的方法:

  1. display: none;适用于FF,而不是Chrome或IE。
  2. 可以将<option>元素附加到隐藏元素中。

示例:

代码语言:javascript
复制
$( '#issue_field_72' ).on( 'change', function () {
  var item = $( this ).find( ':selected' ).attr( 'class' );

  $( '#hidden' ).children().appendTo( '#issue_field_73' );

  var count = $( '#issue_field_73' ).children( '.' + item ).length;

  if ( item && count > 0 ) {
    $( '#issue_field_73' ).children().each( function () {
      if ( !$( this ).hasClass( item ) && $( this ).val() ) $( this ).appendTo( '#hidden' )
    } );
    $( '#issue_field_73' ).removeAttr( 'disabled' )
  } else {
    $( '#issue_field_73' ).attr( 'disabled', 'disabled' )
  }
} )
代码语言:javascript
复制
select {
  width: 150px
}
#hidden {
  display: none
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="all_attributes" >
  <select name="issue[custom_field_values][72]" id="issue_field_72" class="list_cf">
      <option value="">Please select</option>
      <option value="A" class="A">A</option>
      <option value="B" class="B">B</option>
      <option value="C" class="C">C</option>
      <option value="D" class="D">D</option>
      <option value="E" class="E">E</option>
      <option value="F" class="F">F</option>
  </select>
  <select name="issue[custom_field_values][73]" id="issue_field_73" class="list_cf"  disabled="disabled">
      <option value="">Please select</option>
      <option value="A-1" class="A">A-1</option>
      <option value="A-2" class="A">A-2</option>
      <option value="A-3" class="A">A-3</option>
      <option value="B-1" class="B">B-1</option>
      <option value="B-2" class="B">B-2</option>
      <option value="B-3" class="B">B-3</option>
      <option value="B-4" class="B">B-4</option>
      <option value="C-1" class="C">C-1</option>
      <option value="C-2" class="C">C-2</option>
      <option value="C-3" class="C">C-3</option>
      <option value="C-4" class="C">C-4</option>
      <option value="C-5" class="C">C-5</option>
      <option value="C-6" class="C">C-6</option>
  </select>
</div>

<div id="hidden"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50442986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档