Выбрать и скрыть value в select по условиям

192
14 января 2019, 07:40

У меня есть следующий скрипт. При выборе connectid value="1 в presentId должн показываться только value="1" При выборе connectid value="7 в presentId должн показываться только value="1" и в inbound_from value 1, 6, 8 а в остальных случаях connectid value= 1,4,5,6.9 должн показываться только value="2 и в inbound_from value(показывались все)

На данный момент работает так: Когда выбираю connectid value= 1 показывается в presentId value="1 и 2 (а должен только 1) Когда выбираю connectid value= 7 показывается в presentId value="1 и 2 (а должен только 1) и inbound_from(показываются все) а нужно 1,6,8 Когда выбираю connectid value= 2,4,5,6,9 показывается в presentId value="1 и 2 (а должен только 2) и inbound_from(показываются все)

HTML:

<select id="connectid" name="conectId">
   <option value="0" selected="selected"></option>
   <option value="1">ТЕЛЕФОН</option>
   <option value="2">ИНТЕРНЕТ</option>
   <option value="4">ПОСЕЩЕНИЕ</option>
   <option value="5">ПРЕДСТАВИТЕЛЬ</option>
   <option value="6">ПОЧТА</option>
   <option value="7">ГОРЯЧАЯ ЛИНИЯ</option>
   <option value="9">ЛИЧНЫЙ ПРИЁМ</option>
</select>
<select id="presentId" name="presentId" onclick="changepresentId()">
    <option value="1">УСТНОЕ</option>
    <option value="2">ПИСЬМЕННОЕ</option>
</select>
<select id="inbound_from" name="blockger2016.inbound_from" style=
"display: none;">
    <option value="" disabled="" selected="">От кого</option>
    <option value="1">ГРАЖДАНИНОМ (ЛИЧНО)</option>
    <option value="2">Ф1</option>
    <option value="3">Т1</option>
    <option value="4">С1</option>
    <option value="5">З1</option>
    <option value="6">Р1</option>
    <option value="7">Р2</option>
    <option value="8">М1</option>
    <option value="9">С1</option>
    <option value="10">А1</option>
    <option value="11">М2</option>
    <option value="12">Т1</option>
    <option value="100">П1</option>
</select>

JQuery;

function changepresentId() {
            if (($("#presentId" ).val() ==1 && ($("#connectid" ).val() !=1 && $("#connectid" ).val() !=7))
                || ($("#presentId").val() ==2 && ($("#connectid" ).val() ==1 || $("#connectid" ).val() ==7))
                || ($("#presentId").val() ==1 && $("#connectid").val() ==1))

        {   //Блокировка
                $('#inboundLetter').fadeOut();
                $('#inbound_from').fadeOut();
                $('#addpetit').fadeIn();
                $('#sel').fadeIn(); 
        }else{//Открытие
             $('#inboundLetter').fadeIn();
                $('#inbound_from').fadeIn();
                $('#addpetit').fadeOut();
                $('#sel').fadeOut();
        }
     }
Answer 1

Не люблю я jQuery, потому JS:

window.addEventListener('load', function() { 
  /* Делегируем обработчик для всех селектов */ 
  document.querySelector('.forma').addEventListener('change', function(ev) { 
    // Отклоняем самовызов, при установке значения скриптом 
    if (!ev.isTrusted) { return } 
    /* Инициализация объектов и переменных */ 
    let oLinkType = document.querySelector('#connectid'); 
    let oFormType = document.querySelector('#presentId'); 
    let oFromWhom = document.querySelector('#inbound_from'); 
    let oTarget = ev.target; 
    let sSelVal = oTarget.options[oTarget.selectedIndex].value; 
    // Если выбор произошёл в "connectid", тогда... 
    if (oTarget == oLinkType) { 
      /* Выполняем действия в соответствии с выбором */ 
      if (sSelVal == '1') { 
        fShowRequiredItems(oFormType, ['1'], 0); 
        fShowRequiredItems(oFromWhom, ['1']); 
      } else if (sSelVal == '7') { 
        fShowRequiredItems(oFormType, ['1'], 0); 
        fShowRequiredItems(oFromWhom, ['1', '6', '8']); 
      } else { 
        fShowRequiredItems(oFormType, ['2'], 1); 
        fShowRequiredItems(oFromWhom, ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '100']); 
      } 
      changepresentId(); 
      /* Иначе, если нужны действия при выборе в других списках... */ 
    } else if (oTarget == oFormType) { 
    } else if (oTarget == oFromWhom) { 
 
    } 
  }); 
  /* Скрытие/показ и выбор только нужных пунктов в списке  
      oObj - объект "select"  
      aItems - массив значений "value" пунктов, которые следует отобразить 
      nDefault - числовой индекс пункта, который будет выбран после изменений 
  */ 
  function fShowRequiredItems(oObj, aItems, nDefault) { 
    // Массив "option" 
    let aOpt = Array.prototype.slice.call(oObj.querySelectorAll('option')); 
    // Перебор массива "option" 
    aOpt.forEach(function(item, index) { 
      // Если "value" содержится в "видимых", тогда "block", иначе "none" 
      item.style.display = (aItems.includes(item.value)) ? 'block' : 'none'; 
    }); 
    // Если передан выбор "по умолчанию", тогда... 
    if (nDefault !== undefined) { 
      // Выбираем пункт "по умолчанию" 
      oObj.options[nDefault].selected = true; 
    } 
  } 
}); 
 
function changepresentId() { 
  if (($("#presentId").val() == 1 && ($("#connectid").val() != 1 && $("#connectid").val() != 7)) || ($("#presentId").val() == 2 && ($("#connectid").val() == 1 || $("#connectid").val() == 7)) || ($("#presentId").val() == 1 && $("#connectid").val() == 1)) { 
    //Блокировка 
    $('#inboundLetter').fadeOut(); 
    $('#inbound_from').fadeOut(); 
    $('#addpetit').fadeIn(); 
    $('#sel').fadeIn(); 
  } else { 
    //Открытие 
    $('#inboundLetter').fadeIn(); 
    $('#inbound_from').fadeIn(); 
    $('#addpetit').fadeOut(); 
    $('#sel').fadeOut(); 
  } 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="forma"> 
 
  <select id="connectid" name="conectId"> 
    <option value="" disabled selected></option> 
    <option value="1">ТЕЛЕФОН</option> 
    <option value="2">ИНТЕРНЕТ</option> 
    <option value="4">ПОСЕЩЕНИЕ</option> 
    <option value="5">ПРЕДСТАВИТЕЛЬ</option> 
    <option value="6">ПОЧТА</option> 
    <option value="7">ГОРЯЧАЯ ЛИНИЯ</option> 
    <option value="9">ЛИЧНЫЙ ПРИЁМ</option> 
  </select> 
 
  <select id="presentId" name="presentId" onclick="changepresentId()"> 
    <option value="1">УСТНОЕ</option> 
    <option value="2">ПИСЬМЕННОЕ</option> 
  </select> 
 
  <select id="inbound_from" name="blockger2016.inbound_from" style="display: none;"> 
    <option value="" disabled selected>От кого</option> 
    <option value="1">ГРАЖДАНИНОМ (ЛИЧНО)</option> 
    <option value="2">Ф1</option> 
    <option value="3">Т1</option> 
    <option value="4">С1</option> 
    <option value="5">З1</option> 
    <option value="6">Р1</option> 
    <option value="7">Р2</option> 
    <option value="8">М1</option> 
    <option value="9">С1</option> 
    <option value="10">А1</option> 
    <option value="11">М2</option> 
    <option value="12">Т1</option> 
    <option value="100">П1</option> 
  </select> 
 
</div>

READ ALSO
Создание токена востановления пароля ASP.NET Core 2.0

Создание токена востановления пароля ASP.NET Core 2.0

Всем приветПытаюсь прикрутить пример с метанита https://metanit

163
Использовать в кнопке 2 переменную созданную в кнопке 1

Использовать в кнопке 2 переменную созданную в кнопке 1

Kак сделать доступной переменную?

173
Триггер &ldquo;курсор рядом&rdquo;

Триггер “курсор рядом”

Пишу стиль для контролаНужно, что бы если курсор был на контроле или рядом, а точнее слева в радиусе 10 пикселей, то были бы изменения параметров...

157
Редактирование csv

Редактирование csv

Не могу никак найти как редактировать csv файлы в юнити, те

159