Мне нужно создать проверку с помощью JS для промо-кода

#javascript #forms #validation #frontend

#javascript #формы #проверка #интерфейс

Вопрос:

Мне нужно проверить, действителен ли промо-код, когда пользователь добавляет его в форму. 1. должно быть 9 символов 2. При умножении первого числа на 9, второго на 8, третьего на 7, и так полученное число должно быть кратно 11 3. Одна цифра может отображаться не более двух раз рядом друг с другом

это то, что у меня есть на данный момент.

 let number = ['613884922'];

let sum = 0
strNumber = number.toString();
if (strNumber.length != 9) {
  return false;
}
for (var i = 0; length = strNumber.length; i < 9, i  = 1) {
  var n = strNumber.charAt(i);
  sum  = n * (length - i);
}
if (sum % 11 != 0) {
  return false;
}  

Я не уверен, правильно ли я поступаю.

Мне также нужно добавить это в форму, чтобы пользователь мог добавить код и посмотреть, выиграет ли он / она

Я не уверен, как я могу добавить код в форму. Это то, что у меня есть на данный момент.

 </head>

<body>

  <div class = user>
    <h1> Hello! </h1>
    <h1> check if you are lucky!</h1>
  </div>

<form>
    <input name="name" placeholder="What is your name?" class="name" required />
    <input name="emailaddress" placeholder="What is your email?" class="email" type="email" required />
    <input name="code" placeholder="Add you code here and good luck!" class="code" type="code" required></input>
    <input name="submit" class="btn" type="submit" value="Send" />
</form>

<script>
  let number = [];

  let sum = 0
  strNumber = number.toString();
    if (strNumber.length != 9) {
    return false;
  }
    for (var i = 0; length = strNumber.length; i < 9, i  = 1) {
    var n = strNumber.charAt(i);
    sum  = n * (length - i);
  }
    if (sum % 11 != 0) {
    return false;
  }

</script>

</body>
</html>
  

Большое спасибо

Комментарии:

1. что вам нравится делать, если вы ввели неправильный номер или что делать с правильным номером?

2. конечно, Нина!!! неправильный номер — на этот раз не номер Райта — Поздравляю

3. чтобы добавить код проверки в форму, нужно ли мне «назвать» форму? <имя формы =»промокод»>, а затем имя переменной = document.forms[«промокод»][«код»]

Ответ №1:

Функция check

  • проверяет длину строки,
  • проверка строки действительно содержит более трех одинаковых цифр,
  • получите сумму, разделив строку и добавив умножение каждой цифры,
  • и вернуть результат беспокойного деления на 11 .

 function check(string) {
    if (string.length !== 9) return 'wrong length';
    if (/(d)1{2}/.test(string)) return 'too much of the same';
    var sum = Array.from(number).reduce((s, v, i) => s   (9 - i) * v, 0);
    return !(sum % 11);
}


var number = '613884922',
    sum = Array.from(number).reduce((s, v, i) => s   (9 - i) * v, 0);

console.log(check('613884922'));
console.log(check('613384922'));
console.log(check('2'));
console.log(check('2123456789'));
console.log(check('618884922'));