Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Скрипт проверки введенной фразы (https://javascript.ru/forum/events/84470-skript-proverki-vvedennojj-frazy.html)

firsmember 20.09.2022 12:49

Скрипт проверки введенной фразы
 
Приветствую уважаемые Джедаи JavaScript !

Давно вас не тревожил)) Помогите плиз! :help:

Имею несколько блоков, в каждом по 2 формы:
1.
<form name="promocodeforsale" class="promoform promofortp1" onsubmit="return false;">
          <input class="promocodeforminput" type="text" placeholder="Введите промокод" name="promocode">
          <input class="promocodeformbtn btn" type="submit" value="Применить">
        </form>


2.
<script src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff_v2.js"></script>
        <form name="TinkoffPayForm" class="tinkoffpayform tinkoffpayform1" onsubmit="pay(this); return false;">
          <input class="tinkoffPayRow" type="hidden" name="terminalkey" value="мой код терминала">
          <input class="tinkoffPayRow" type="hidden" name="frame" value="true">
          <input class="tinkoffPayRow" type="hidden" name="language" value="ru">
          <input class="tinkoffPayRow" type="hidden" placeholder="Сумма заказа" value="25000" name="amount" required>
          <input class="tinkoffPayRow" type="hidden" placeholder="Номер заказа" name="order">
          <input class="tinkoffPayRow" type="hidden" placeholder="Описание заказа" name="description">
          <input class="tinkoffPayRow" type="hidden" placeholder="ФИО плательщика" name="name">
          <input class="tinkoffPayRow" type="email" placeholder="Ваш E-mail" required name="email">
          <input class="tinkoffPayRow btn" type="submit" value="Я иду сюда">
        </form>


Нужно, чтобы после ввода промокода (секретныйпромокод) в форму 1 - если он верный, то, в форме 2 у input name="amount" менялось value="25000" на 20% меньше и всплывал алерт - Промокод активирован... А если не верный то просто всплывал - Алерт - Промокод не верен.

Определять формы при том нужно по классам promofortp1 и tinkoffpayform1 соответственно, т.к. на странице еще несколько таких парочек, чтобы я и в них продублировал....

ksa 20.09.2022 14:52

Цитата:

Сообщение от firsmember
Нужно, чтобы после ввода промокода (секретныйпромокод) в форму 1 - если он верный, то, в форме 2 у input name="amount" менялось value="25000" на 20% меньше и всплывал алерт - Промокод активирован... А если не верный то просто всплывал - Алерт - Промокод не верен.

Как-то так...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
</style>
<script>
document.addEventListener('DOMContentLoaded', _ => {
	const fp1 = document.querySelector('.promofortp1')
	const fi1 = document.querySelector('.tinkoffpayform1')
	const o = fi1.querySelector('[name="amount"]')
	fp1.addEventListener('submit', e => {
		e.preventDefault()
		let mes
		const prm = fp1.querySelector('[name="promocode"]').value
		// тут проверяется промокод
		if (true) {
			let v = +o.value
			o.value = (v / 100) * 25
			mes = 'Промокод активирован'
		} else {
			mes = 'Промокод не верен'
		}
		alert(mes)
	})
})
/*
$(_ => {
})
*/
</script>
</head>
<body>
<form name="promocodeforsale" class="promoform promofortp1">
	<input class="promocodeforminput" type="text" placeholder="Введите промокод" name="promocode">
	<input class="promocodeformbtn btn" type="submit" value="Применить">
</form>
<form name="TinkoffPayForm" class="tinkoffpayform tinkoffpayform1" onsubmit="pay(this); return false;">
	<input class="tinkoffPayRow" type="hidden" name="terminalkey" value="мой код терминала">
	<input class="tinkoffPayRow" type="hidden" name="frame" value="true">
	<input class="tinkoffPayRow" type="hidden" name="language" value="ru">
	<input class="tinkoffPayRow" type="hidden" placeholder="Сумма заказа" value="25000" name="amount" required>
	<input class="tinkoffPayRow" type="hidden" placeholder="Номер заказа" name="order">
	<input class="tinkoffPayRow" type="hidden" placeholder="Описание заказа" name="description">
	<input class="tinkoffPayRow" type="hidden" placeholder="ФИО плательщика" name="name">
	<input class="tinkoffPayRow" type="email" placeholder="Ваш E-mail" required name="email">
	<input class="tinkoffPayRow btn" type="submit" value="Я иду сюда">
</form>
</body>
</html>

firsmember 20.09.2022 15:20

Но сейчас ведь он любой промокод верным считает, а как проверить что введено именно это слово ? секретныйпромокод

ksa 20.09.2022 15:57

Цитата:

Сообщение от firsmember
а как проверить что введено именно это слово ? секретныйпромокод

Так я твоего секрета не знаю... :no:

firsmember 20.09.2022 17:27

Логично - :) А я думал слово не имеет значение =)
"nadepozit" - это слово - без кавычек

рони 20.09.2022 17:58

firsmember,
if (true)

if(prm == "nadepozit")

:(

firsmember 20.09.2022 18:27

А дак, ну я остальной то код не понял )
Получается, в переменную в эту кладется слово)
В php я б так и сделал)

Благодарю! Всегда выручаете )

UPD..

Кому код тоже пригодится в формуле нужно поправить o.value = (v / 100) * 25
- считает скидку 75% от суммы - соответственно чтобы получить скидку в 20% нужно писать o.value = (v / 100) * 80

voraa 20.09.2022 18:57

Ну не должно это на клиенте проверяться. Должен быть запрос к серверу, и ответ от него, верный промокод или нет.
Так кто угодно в отладчике посмотрит, с чем он сравнивается.

firsmember 20.09.2022 19:05

Да, конечно, я это понимаю, это все обсуждалось - и эта вещь для очень узкого круга лиц на 2 часа =) Там ничего страшного не произойдет )

firsmember 21.09.2022 12:52

Подскажите пожалуйста, а как сделать чтобы повторно нельзя было активировать промокод? А то при каждой активации промокода, сумма уменьшается :(


Часовой пояс GMT +3, время: 09:58.