Функция onClick не работает для выбранного поля параметра

У меня есть кнопка Paypal на моей веб-странице, содержащая этот сгенерированный код:

<form action = "https://www.paypal.com/cgi-bin/webscr" method = "post" target = "_top" class = "center-align" id = "paypal">
  <input type = "hidden" name = "cmd" value = "_s-xclick" >
  <input type = "hidden" name = "hosted_button_id" value = "XMMPHFAWFLLRG">
  <input type = "image" src = "https://www.paypalobjects.com/de_DE/DE/i/btn/btn_buynowCC_LG.gif" border = "0" name = "submit" alt = "Jetzt einfach, schnell und sicher online bezahlen – mit PayPal." ">
  <img alt = ""

Нажав на логотип «купить сейчас», JS должен проверить, выбрана ли опция. Я использую Materialize Framework, и это поле выбора:

<select>
  <option value = "0" disabled selected>Kategorie</option>
  <option value = "1">Beauty</option>
  <option value = "2">Technik</option>
  <option value = "3">Deko</option>
</select>

Так что никаких идентификаторов или имен классов, это единственный выбор на странице.

Мой Javascript, который я пробовал, выглядит так:

function isSelected() {
  if (getElementsByTagName("select").value == '0') {
    alert("Bitte eine Kategorie auswählen!");
  }
}

Как вы думаете, ребята, я могу решить проблему? Я проверил похожие вопросы, но не смог их решить.

Вы смотрели на этот вопрос / ответ? У него есть решение вашей проблемы: stackoverflow.com/a/26248617/1309377

Andrew Lohr 17.12.2018 16:07
getElementsByTagName возвращает HtmlCollection (0, 1 или несколько элементов). В коллекции нет понятия value. Итак, вам нужно выбрать конкретный элемент из коллекции, который вы хотите проверить.
Yury Tarabanko 17.12.2018 16:09

Помещение обработчика события щелчка для выбора будет работать и для опций.

Mark Baijens 17.12.2018 16:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
5
486
2

Ответы 2

Использование JS должно быть вашим последним выбором;) (если вы хотите только проверить, выбрано ли что-то) Попробуйте использовать обязательные поля в html5 и используйте проверки. https://www.w3schools.com/tags/att_select_required.asp

Я думаю, это могло бы сработать, если бы <select> не находился бы за пределами "формы" PayPal: D

Tom Otten 17.12.2018 16:12

А) если он отключен, есть ли смысл в том, чтобы его тоже выбирали? просто логический вопрос, возможно, ваша структура тоже может вызвать проблемы с этим Б) параметры [selectedIndex] .value - это то, на что вам следует обратить внимание

var paypalSelect = getElementsByTagName("select")[0], // only if it really is the first SELECT on your page .. otherwise .. see below
ppsIndex = paypalSelect.selectedIndex, 
ppsValue = paypalSelect.options[ ppsIndex ].value

вы можете присвоить ему идентификатор, например:

<select id = "paypal_select_Kategorie">…</select>

а потом

var paypalSelect = document.querySelector( '#paypal_select_Kategorie' ) // etc.pp.

Итак .. чтобы собрать все вместе: Сначала введите input: image: отправьте прослушиватель onclick:

onclick=checkCategory(this)

Затем добавьте эту функцию:

function checkCategory( ppSelect ){
  var ppsIndex = ppSelect.selectedIndex, 
    ppsValue = ppSelect.options[ ppsIndex ].value
  if ( parseInt( ppsValue ) == 0 ) console.info( "disabled standard" ); else console.info( "non-standard selection: "+ ppsValue )
}

Хорошо .. но как мне проверить, если это Val: 0, если я нажму на логотип PayPal? это не «кнопка отправки» внутри тега <form>.

Tom Otten 17.12.2018 16:15

if (parseInt (ppsValue) == 0) console.info ("Категория: Категория) else console.info (" Категория ==> "+ ppsValue)

flowtron 17.12.2018 16:18

Хм? Это как-то связано с функцией onClick? Я имею в виду, например, если пользователь нажимает «купить сейчас», как тогда проверить, стоит ли это значение 0 или нет. Значение 0 - это просто отключенное стандартное значение «Категории», чтобы дать пользователю знать, что выбрать при выборе.

Tom Otten 17.12.2018 16:22

"отключенный стандарт" ... заставляет мои логические схемы тупить ;-) .. и остальная часть вашего вопроса не более ясна. Я добавлю код из комментария к своему ответу и надеюсь, что это проясняет его.

flowtron 17.12.2018 16:25

Другие вопросы по теме