Кредитная карта Swiper Javascript продолжает работать - PullRequest
0 голосов
/ 06 октября 2011

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

Вот соответствующий код:

<script type="text/javascript">

        window.onload = function () {
            $("#cn").focus();
            $("#cn").bind("keydown keyup", doItPlease);
        }
        function doItPlease() {
            var count = 0;
            if ($(this).val().indexOf('?') !== -1 && count < 1) {
                setFromCCS($(this).val())
                count++;
            }
        }
   </script>

Вот ссылка на полный код: http://paste2.org/p/1693324

ОБНОВЛЕНИЕ 1:

Добавление $ (document) .ready (function ()) решило большую часть проблемы, но я все еще не получил нужный мне результат.Он по-прежнему работает дважды, поскольку в строке, которая вводится, есть два вопросительных знака (?).Есть ли простой способ ограничить запуск только один раз?

Текущий код: http://paste2.org/p/1693577

ОБНОВЛЕНИЕ 2:

Хорошо, у меня есть рабочее решение, где сценарий повторно проанализирует строку и заменит ее.Я чувствую, что это взлом, и есть лучший способ сделать это, просто не знаю, как в данный момент.Вот код:

$(document).ready(function () {
        var count = 0;

        $("#cn").focus();

        $("#cn").keyup(function () {
            if ($(this).val().indexOf('?') !== -1 && count < 1) {
                var magstripe = $(this).val().substring(0, $(this).val().indexOf('?'));
                setFromCCS(magstripe);
                count++;
            }
            else if ($(this).val().indexOf('?') !== -1 && count > 0) {
                $("#cn").val($(this).val().substring(0, $(this).val().indexOf(';')));
            }
        });
    });

Вот анализируемый MagStripe:% B9999999999999999 ^ AAAAAAA / AAAAAA ^ 1204101 999?; B9999999999999999 = 120410110000999?

1 Ответ

2 голосов
/ 06 октября 2011

Вы используете jQuery, поэтому, пожалуйста, используйте его правильно:

$(document).ready(function() {
  var count = 0;

  $("#cn").focus();

  $("#cn").bind("keydown keyup", function() {
    if ($(this).val().indexOf('?') !== -1 && count < 1) {
      setFromCCS($(this).val())
      count++;
    }
  });
});

Вам нужно , чтобы использовать $(document).ready(), поскольку он правильно запускает JS, когда DOM готов.

...