信用卡Swiper Javascript继续前进

时间:2011-10-06 19:04:05

标签: javascript html credit-card

我有一个脚本在加载页面时绑定到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 个答案:

答案 0 :(得分:2)

你正在使用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(),因为它在DOM准备就绪时正确运行JS。