我有一个脚本,该脚本会在页面加载时绑定到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:
好的,所以我有了一个可行的解决方案,其中脚本将重新解析字符串并替换它。我觉得这是一个hack,有更好的方法可以做到,只是不确定目前如何。这是代码:
$(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?
最佳答案
您正在使用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。关于javascript - 信用卡刷卡器Javascript不断发展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7679164/