Проверка полосы отключена указанием c JavaScript на странице - PullRequest
0 голосов
/ 11 июля 2020

Я внедрил Stripe's Client-Only Dashboard Checkout (https://stripe.com/docs/payments/checkout/client) на странице html. Я изменил значение quantity в коде Stripe JS с целого числа 1 на выбранную мной переменную под названием numb. Я не вносил никаких других изменений в код Stripe JS.

Если я использую свой собственный код JS, чтобы изменить значение numb на целое число по моему выбору, тогда, когда я нажимаю кнопку Checkout, Stripe Страница оформления заказа обновила количество и общую цену, чтобы отразить значение numb. Это то, что я хочу.

Проблема возникает тогда, когда вместо numb = 2; я использую оператор JS, который позволяет пользователю страницы html изменять значение numb. Вот фрагмент кода:

  <P>How many tickets do you want to buy?</p>
  <input type="number" id="steve-number-tickets">
  <button id="steve-testing">How many?</button>

  <p id="test-for-numb"></p>

  <script>
    // ***MY CODE***
    numb = 7;
    // User Chooses
    var howManyButton = document.getElementById('steve-testing');
    howManyButton.addEventListener('click', function () {
      numb = 2;
      // numb = document.getElementById('steve-number-tickets').value;
      // document.getElementById('test-for-numb').innerHTML = numb;
    });
    // ***END OF MY CODE***
  </script>

С приведенным выше кодом я получаю следующее поведение. Если пользователь обновляет страницу и просто нажимает кнопку Checkout , Stripe checkout выставляет счет за 7 элементов. Если они обновят sh страницу и нажмут мою кнопку Сколько? , а затем кнопку Checkout , Stripe checkout выставит им счет за 2 элемента.

Если я изменю код, поэтому numb = 2 закомментирован, а комментарии удалены из numb = document.getElementById('steve-number-tickets').value;, тогда, если пользователь обновляет страницу и нажимает кнопку Checkout , Stripe chekout выставляет счет за 7 элементов. Если они обновляют sh страницу и нажимают мою кнопку Сколько? (независимо от того, вводят ли они сначала целое число в элемент input ), а затем нажимают на полосу Кнопка «Оформить заказ» , «Оформление заказа с полосой» не загружается.

Я подумал, что это проблема с оператором: numb = document.getElementById('steve-number-tickets').value;. Итак, я проверил это, раскомментировав оператор document.getElementById('test-for-numb').innerHTML = numb;. Когда я это сделаю, значение, введенное пользователем в элемент input , отображается в элементе p с id = "test-for-numb" , когда они нажмите кнопку Сколько? . Итак, этот оператор работает так, как ожидалось.

Я не могу понять, почему проверка полосы пропускания не загружается, когда я использую оператор numb = document.getElementById('steve-number-tickets').value;, но загружается, когда я использую numb = 2;.

Я действительно хотел бы знать, что происходит.

1 Ответ

1 голос
/ 12 июля 2020

Это потому, что value ввода - это всегда строка - type=number влияет только на UI, а не на тип значения. Вам просто нужно обернуть это в parseInt(), чтобы получить фактическое число, что и ожидает Checkout API.

...