Мне нужно создать проверку с помощью JS для промо-кода - PullRequest
2 голосов
/ 26 марта 2019

Мне нужно проверить, действителен ли промо-код при добавлении пользователя в форму.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>

Спасибо, looot

1 Ответ

1 голос
/ 26 марта 2019

Функция 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'));
...