Немного вопрос для начинающих. Я пытаюсь применить javascript для страницы публикации контента в Drupal, где, если пользователь выбирает X из выпадающего меню с множественным выбором, а затем показывает div 1,2 и 4. Если они выбирают Y и Z, показывать эти связанные поля ,
У меня уже есть базовый рабочий сценарий (даже немного уродливый и начинающий), основанный на единственном выборе. Но у меня есть несколько вариантов выбора.
Я полагаю, это делается путем помещения выбранных вариантов в массив и проверки на это. Но это немного выходит за рамки моих навыков, и я не могу найти хороший пример для своего сценария:
Черт, я даже не могу пройти мимо, просто показывая предупреждение с массивом вариантов, не говоря уже об изменении кода по мере необходимости. Я вижу предложения использовать "$ (this) .val ();" ... но я просто получаю сообщение об ошибке в консоли: "$ не функция". Я пробовал синтаксис jQuery и синтаксис javascript, предполагая, что я все сделал правильно. Я почти уверен, что мой модуль Drupal знает, что он принимает jQuery, если в этом проблема.
(как примечание: я уверен, что есть более простой / короткий способ переключать div с помощью класса или пользовательского атрибута. Но, несмотря на все различные идентификаторы и сценарии, эти методы не кажутся короче .)
Будучи новичком в Javascript, я надеюсь, что хорошо объяснил. Вот скрипт, который я сделал и хочу изменить:
if(window.attachEvent) {
window.attachEvent('onload', whenLoaded);
} else {
if(window.onload) {
var curronload = window.onload;
var newonload = function(evt) {
curronload(evt);
whenLoaded(evt);
};
window.onload = newonload;
} else {
window.onload = whenLoaded;
}
}
function whenLoaded() {
document.getElementById('edit-field-resource-type').addEventListener('change', function () {
alert(this.value); // test to show worked.
// alert($(this).val()); // tried for multiple choices - didn't work:
// "$ is not a function" .. I tried this way too: $(this).value;
// var choices_array = [];
var showWebinars = this.value == "taxonomy_term-14" ? 'block' : 'none';
var showCaseStudies = this.value == "taxonomy_term-12" ? 'block' : 'none';
var showWhitePapers = this.value == "taxonomy_term-11" ? 'block' : 'none';
var showVideos = this.value == "taxonomy_term-13" ? 'block' : 'none';
var showPodcasts = this.value == "taxonomy_term-62" ? 'block' : 'none';
var showOther = this.value == "taxonomy_term-16" ? 'block' : 'none';
var showInfographics = this.value == "taxonomy_term-10" ? 'block' : 'none';
document.getElementById('edit-post-webinar-copy-wrapper').style.display = showWebinars;
document.getElementById('edit-field-event-duration-wrapper').style.display = showWebinars;
document.getElementById('edit-field-infographic-file-wrapper').style.display = showInfographics;
document.getElementById('edit-field-video-embed-wrapper').style.display = showVideos;
document.getElementById('edit-field-video-third-party-wrapper').style.display =
document.getElementById('edit-field-audio-file-wrapper').style.display = showPodcasts;
document.getElementById('edit-field-audio-file-link-wrapper').style.display = showPodcasts;
document.getElementById('edit-field-resource-file-wrapper').style.display = showWhitePapers;
document.getElementById('edit-field-resource-file-wrapper').style.display = showWhitePapers;
document.getElementById('edit-field-infographic-file-wrapper').style.display = showInfographics;
});
}