Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery不阻止回发,然后重新标记原始数据_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript jquery不阻止回发,然后重新标记原始数据

Javascript jquery不阻止回发,然后重新标记原始数据,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我从一个基本的USB信用卡读卡器中获取信用卡信息。一个膨胀的ASCII数据流被发送到文本框,MyJS将其解析为有用的位。一切正常 在我的ASP.NET应用程序中,我有以下jquery块,它在不同的页面上工作得很好,但在所讨论的页面上会中断。下面的jquery与我在另一个页面上看到的唯一不同之处是第1行.unbind。我添加了这一行,因为这是我能找到的唯一方法,可以让更改侦听器启动。但是它有一个副作用:在更改侦听器启动并且数据流被清除之后,不知何故发生了回发,然后原始数据流被塞进我的文本框:txt

我从一个基本的USB信用卡读卡器中获取信用卡信息。一个膨胀的ASCII数据流被发送到文本框,MyJS将其解析为有用的位。一切正常

在我的ASP.NET应用程序中,我有以下jquery块,它在不同的页面上工作得很好,但在所讨论的页面上会中断。下面的jquery与我在另一个页面上看到的唯一不同之处是第1行.unbind。我添加了这一行,因为这是我能找到的唯一方法,可以让更改侦听器启动。但是它有一个副作用:在更改侦听器启动并且数据流被清除之后,不知何故发生了回发,然后原始数据流被塞进我的文本框:txtCreditCardNumber

重要提示:刷卡者似乎在流的末尾发送了一个CRLF,所以这可能是导致回发的原因。但这令人费解,因为即使我在文本框中手动输入一些内容并按enter键,也不会发生回发

刷卡时,另一页不会自动回发。在这个页面上,如果没有取消绑定,就不会调用change listener,但是通过它,我得到了正确的解析/清理,然后是回发,然后是文本框,其中填充了来自读卡器的完整原始数据流

$("#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!我没有意识到这一点,因为这不会导致在我的另一个页面上使用相同的代码进行回发。如何防止回发?