#javascript #contact-form-7 #contact-form
#javascript #contact-form-7 #contact-form
Вопрос:
Я хотел бы потребовать от пользователя ввести свой веб-сайт, если пользователь выбирает в раскрывающемся списке что-либо еще, кроме профиля посетителя.
Значение поля Url по умолчанию пустое. Если в раскрывающемся списке профиля пользователя выбрано значение «Посетитель», слушатель устанавливает для поля url значение «https://example.com » else url имеет значение пустой, чтобы потребовать от пользователя ввода URL-адреса перед отправкой формы.
Пожалуйста, помогите с приведенным ниже кодом:
- Независимо от выбранного профиля пользователя, в функции прослушивателя всегда по умолчанию используется значение «не-посетитель».
- Если пользователь выбирает not-Visitor, я проверил, чтобы установить URL на некоторый фиктивный https, но значение поля url не меняется, что означает, что мой код также не может установить URL на определенное значение.
К вашему сведению — вы заметите использование [group] для скрытия / отображения поля ввода Url в соответствии с условными полями Contact Form 7, которые косметически скрываются / отображаются.
Спасибо за вашу помощь
[РЕДАКТИРОВАТЬ] — рабочий код ниже. В итоге я удалил и использовал id: для назначения и использования переменных.
Форма контакта 7 -> Код вкладки формы:
<div class="wpcf7-inline-wrapper">
<p class="wpcf7-inline-field">[text* your-firstname watermark "First Name"]</p>
<p class="wpcf7-inline-field">[text* your-lastname placeholder "Last Name"]</p>
</div>
<div class="wpcf7-inline-wrapper">
<p class="wpcf7-inline-field">[email* your-email "Email"] </p>
</div>
<div class="wpcf7-inline-wrapper">
<p class="wpcf7-inline-field">
<label id="dropDownProfile">
[select* your-profile id:dropDownProfile first_as_label "-- Choose Profile Type --" "Visitor" "Engineer"]
</label>
</p></div>
[group PortfolioWebsite]
<p class="wpcf7-inline-field">[url* your-url id:userWebsite] </p>
[/group]
<p>[textarea your-message "Message"] </p>
[submit class:btn class:btn-accent "Contact"]
<script>
document.getElementById("dropDownProfile").addEventListener("change", displayUrl);
function displayUrl()
{
var currProfile=document.getElementById("dropDownProfile").value;
console.log(currProfile);
if (currProfile == "Visitor")
{
document.getElementById("userWebsite").value = "https://dummyplaceholder.com";
}
else
{
console.log("at Exhibt");
document.getElementById("userWebsite").value = "";
}
}
</script>
Комментарии:
1. ваш код содержит множество очевидных ошибок, что наводит меня на мысль, что вы просто скопировали и вставили большую его часть и на самом деле не понимаете javascript DOM. прежде всего, вам необходимо использовать тот же идентификатор в коде формы, что и в том, что вы используете
document.getElementById
. во-вторых, это простоelement.value
, неelement.display.value
Ответ №1:
К вашему сведению, я нашел эту ссылку хорошей отправной точкой https://www.codecanal.com/conditionally-display-fields-in-contact-form-7-with-simple-javascript /
в итоге не использовалось для назначения / использования переменных, вместо этого используйте id: назначение у слушателя с getElementById(«hereTheID»).значение
Рабочий код отредактирован в вопросе
приветствия