У меня есть кнопка 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!");
}
}
Как вы думаете, ребята, я могу решить проблему? Я проверил похожие вопросы, но не смог их решить.
getElementsByTagName
возвращает HtmlCollection (0, 1 или несколько элементов). В коллекции нет понятия value
. Итак, вам нужно выбрать конкретный элемент из коллекции, который вы хотите проверить.
Возможный дубликат Что возвращают querySelectorAll, getElementsByClassName и другие методы getElementsBy *?
Возможный дубликат Получить значение параметров с помощью имени тега в JavaScript
Помещение обработчика события щелчка для выбора будет работать и для опций.
Использование JS должно быть вашим последним выбором;) (если вы хотите только проверить, выбрано ли что-то) Попробуйте использовать обязательные поля в html5 и используйте проверки. https://www.w3schools.com/tags/att_select_required.asp
Я думаю, это могло бы сработать, если бы <select> не находился бы за пределами "формы" PayPal: D
А) если он отключен, есть ли смысл в том, чтобы его тоже выбирали? просто логический вопрос, возможно, ваша структура тоже может вызвать проблемы с этим Б) параметры [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>.
if (parseInt (ppsValue) == 0) console.info ("Категория: Категория) else console.info (" Категория ==> "+ ppsValue)
Хм? Это как-то связано с функцией onClick? Я имею в виду, например, если пользователь нажимает «купить сейчас», как тогда проверить, стоит ли это значение 0 или нет. Значение 0 - это просто отключенное стандартное значение «Категории», чтобы дать пользователю знать, что выбрать при выборе.
"отключенный стандарт" ... заставляет мои логические схемы тупить ;-) .. и остальная часть вашего вопроса не более ясна. Я добавлю код из комментария к своему ответу и надеюсь, что это проясняет его.
Вы смотрели на этот вопрос / ответ? У него есть решение вашей проблемы: stackoverflow.com/a/26248617/1309377