Javascript jquery不阻止回发,然后重新标记原始数据
我从一个基本的USB信用卡读卡器中获取信用卡信息。一个膨胀的ASCII数据流被发送到文本框,MyJS将其解析为有用的位。一切正常 在我的ASP.NET应用程序中,我有以下jquery块,它在不同的页面上工作得很好,但在所讨论的页面上会中断。下面的jquery与我在另一个页面上看到的唯一不同之处是第1行.unbind。我添加了这一行,因为这是我能找到的唯一方法,可以让更改侦听器启动。但是它有一个副作用:在更改侦听器启动并且数据流被清除之后,不知何故发生了回发,然后原始数据流被塞进我的文本框:txtCreditCardNumber 重要提示:刷卡者似乎在流的末尾发送了一个CRLF,所以这可能是导致回发的原因。但这令人费解,因为即使我在文本框中手动输入一些内容并按enter键,也不会发生回发 刷卡时,另一页不会自动回发。在这个页面上,如果没有取消绑定,就不会调用change listener,但是通过它,我得到了正确的解析/清理,然后是回发,然后是文本框,其中填充了来自读卡器的完整原始数据流Javascript jquery不阻止回发,然后重新标记原始数据,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我从一个基本的USB信用卡读卡器中获取信用卡信息。一个膨胀的ASCII数据流被发送到文本框,MyJS将其解析为有用的位。一切正常 在我的ASP.NET应用程序中,我有以下jquery块,它在不同的页面上工作得很好,但在所讨论的页面上会中断。下面的jquery与我在另一个页面上看到的唯一不同之处是第1行.unbind。我添加了这一行,因为这是我能找到的唯一方法,可以让更改侦听器启动。但是它有一个副作用:在更改侦听器启动并且数据流被清除之后,不知何故发生了回发,然后原始数据流被塞进我的文本框:txt
$("#txtCreditCardNumber").unbind("keypress");
$('#txtCreditCardNumber').bind('change', function(e) {
e.preventDefault();
if (e.which == 46 || e.which == 8)
return; // always ignore the DELETE and BACKSPACE keys
var element = this;
setTimeout(function() {
var ccRawData = $(element).val();
ccNumber = getCCNumberFromRawData(ccRawData);
ccExpYear = getCCExpYearFromRawData(ccRawData);
ccExpMonth = getCCExpMonthFromRawData(ccRawData, false);
ccNameOnCard = getCCNameOnCardFromRawData(ccRawData);
if (ccExpMonth.length == 1)
ccExpMonth = "0" + ccExpMonth;
$('#txtCreditCardNumber').val(ccNumber);
$('#txtCCExpirationDate').val(ccExpMonth + "" + ccExpYear);
//$('#ccEmbeddedName').html(ccNameOnCard);
$("#txtCreditCardNumber").attr('maxlength', '16');
}, 0);
return false;
});
下面是ASP.NET文本框:
<asp:TextBox runat="server" ID="txtCreditCardNumber" data-capture="CCAccountNo" CssClass="creditcard" style="width:114px" />
如果我能阻止回发,我相信整个问题都会解决。我已经在做e.preventDefault了,但是没有效果。有什么想法吗?读卡器会在ASCII流的末尾发送CRLF吗?你能发布文本框的html吗?你已经标记了asp.net。你可能创建了一个服务器端事件,这将导致回发。我在原始帖子中添加了文本框代码。史蒂夫:是的!我相信在溪流的尽头有一个CRLF!我没有意识到这一点,因为这不会导致在我的另一个页面上使用相同的代码进行回发。如何防止回发?