Я пытаюсь настроить зависимое поле на основе поля выбора реферала. Если выбран один из вариантов реферала, я бы хотел, чтобы поле имени моего реферала отображалось в форме.
Я пытался использовать javascript для решения этой проблемы, но продолжаю зависать при попытке добавить дополнительные значения для поля выбора.
<div class = "smartcapture-controls"><div class = "sc-formfield-label"><label
for = "Hear About">How Did you Hear About Us? *</label></div>
<div class = "sc-formfield-input">
<select id = "master-dependent" name = "Hear About" data-field-type = "Text"
required = "required" data-validation-message = "Please fill out this
field.">
<option value = "" selected = "selected"></option>
<option value = "Through ICC">Through ICC</option>
<option value = "Through Triumph Business Capital">Through Triumph
Business Capital</option>
<option value = "Through Another Triumph Employee">Through Another
Triumph Employee</option>
<option value = "Through a Triumph Insurance Client">Through a Triumph
Insurance Client</option>
<option value = "Online Search">Online Search</option>
<option value = "Social Media">Social Media</option>
</select>
</div>
</div>
Если выбран любой из первых 4 вариантов, я бы хотел, чтобы он отображал мое реферальное поле ниже
<div id = "dependent" style = "display:none;" class = "smartcapture-controls">
<div class = "sc-formfield-label"><label for = "Referral Name">Referral Name *
</label></div>
<div class = "sc-formfield-input"><input type = "text" name = "Referral Name"
data-field-type = "Text" required = "required" data-validation-message = "Please fill out this field."></div>
</div>
Это был код, который я пробовал ниже, но, похоже, не могу заполнить поле реферала
<script>
function showHideReferral() {
if (document.getElementByID("master-dependent").value= = "Through ICC") {
document.getElementById("dependent").style.display = "block";
} else {
document.getElementById("dependent").style.display = "none";
}
}
</script>
Ожидаемый результат — заполнить поле реферала в форме, если выбран любой из первых 4 вариантов. Но в настоящее время мое реферальное поле остается скрытым независимо от выбора.
да, добавьте onchange = "showHideReferral()" к тегу выбора



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно получить значение поля выбора, как показано ниже, и выполнить сравнение
<script>
function showHideReferral() {
*if (document.getElementByID("master-dependent").options[e.selectedIndex].value= = "Through ICC"){*
document.getElementById("dependent").style.display = "block";
} else {
document.getElementById("dependent").style.display = "none";
}
}
добавить onchange = "showHideReferral(this)" к select и
function showHideReferral(select) {
let v = ["","Social Media","Online Search"];
dependent.style.display = v.includes(select.value) ? "none" : "block";
}
function showHideReferral(select) {
let v = ["","Social Media","Online Search"];
dependent.style.display = v.includes(select.value) ? "none" : "block";
}<div class = "smartcapture-controls">
<div class = "sc-formfield-label"><label for = "Hear About">How Did you Hear About Us? *</label></div>
<div class = "sc-formfield-input">
<select id = "master-dependent" name = "Hear About" data-field-type = "Text" required = "required" data-validation-message = "Please fill out this
field." onchange = "showHideReferral(this)">
<option value = "" selected = "selected"></option>
<option value = "Through ICC">Through ICC</option>
<option value = "Through Triumph Business Capital">Through Triumph Business Capital</option>
<option value = "Through Another Triumph Employee">Through Another Triumph Employee</option>
<option value = "Through a Triumph Insurance Client">Through a Triumph Insurance Client</option>
<option value = "Online Search">Online Search</option>
<option value = "Social Media">Social Media</option>
</select>
</div>
</div>
<div id = "dependent" style = "display:none;" class = "smartcapture-controls">
<div class = "sc-formfield-label"><label for = "Referral Name">Referral Name *
</label></div>
<div class = "sc-formfield-input"><input type = "text" name = "Referral Name" data-field-type = "Text" required = "required" data-validation-message = "Please fill out this field."></div>
</div>Вы забыли первый вариант. Пожалуйста, добавьте это в свой массив и дайте мне знать об этом.
Вы правы, это неясно, но, вероятно, OP w хочет, чтобы первые 4 непустых параметра отображали дополнительное поле - ответ обновлен
Это хороший ответ сейчас.
Убедитесь, что вы называете свое шоу скрытым function в событии onchange, что вы исправляете опечатки, такие как getElementByID (вместо этого правильно getElementById), и что ваша логика верна. Это проверенное решение:
function showHideReferral() {
if (document.getElementById("master-dependent").value.indexOf("Through") == 0) {
document.getElementById("dependent").style.display = "block";
} else {
document.getElementById("dependent").style.display = "none";
}
}<div class = "smartcapture-controls"><div class = "sc-formfield-label"><label
for = "Hear About">How Did you Hear About Us? *</label></div>
<div class = "sc-formfield-input">
<select onchange = "showHideReferral()" id = "master-dependent" name = "Hear About" data-field-type = "Text"
required = "required" data-validation-message = "Please fill out this
field.">
<option value = "" selected = "selected"></option>
<option value = "Through ICC">Through ICC</option>
<option value = "Through Triumph Business Capital">Through Triumph
Business Capital</option>
<option value = "Through Another Triumph Employee">Through Another
Triumph Employee</option>
<option value = "Through a Triumph Insurance Client">Through a Triumph
Insurance Client</option>
<option value = "Online Search">Online Search</option>
<option value = "Social Media">Social Media</option>
</select>
</div>
</div>
<div id = "dependent" style = "display:none;" class = "smartcapture-controls">
<div class = "sc-formfield-label"><label for = "Referral Name">Referral Name *
</label></div>
<div class = "sc-formfield-input"><input type = "text" name = "Referral Name"
data-field-type = "Text" required = "required" data-validation-message = "Please fill out this field."></div>
</div>
Я подумал, что это было что-то простое, что я забыл. Это решение сработало для меня, большое спасибо за вашу помощь!
@RunRabbit Я рад, что проблема решена.
Где звонок
showHideReferral()?