У меня есть следующий скрипт. При выборе 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();
}
}
Не люблю я 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>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем приветПытаюсь прикрутить пример с метанита https://metanit
Пишу стиль для контролаНужно, что бы если курсор был на контроле или рядом, а точнее слева в радиусе 10 пикселей, то были бы изменения параметров...