我有一个脚本在加载页面时绑定到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
添加$(document).ready(function())解决了很多问题,但我仍然没有得到我需要的结果。它仍然运行两次,因为正在输入的字符串中有两个问号(?)。有没有简单的方法来限制它只运行一次?
当前代码:http://paste2.org/p/1693577
好的,所以我有一个可行的解决方案,脚本将重新解析字符串并替换它。我觉得这是一个黑客,有一个更好的方法来做到这一点,只是不知道如何。这是代码:
$(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?
答案 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。