使用文本框上的jQuery绑定防止感知无限循环

时间:2014-11-07 19:47:22

标签: javascript jquery

我有一个网站可以获得相当多的使用(每天600多个用户),因此我在下面描述的问题并不常见。说实话,有几次我已经向我汇报了,但我还没有自己重现这个问题。我已经使用browserstack.com来测试所有各种浏览器\操作系统组合,但这段代码每次都有效...

所以这是场景。我的网站涉及车辆保修,整个过程从用户输入车辆识别码(VIN)开始。 VIN是数字和字母的混合体,但总有17种。当用户输入VIN时,我会执行一些验证VIN的逻辑,返回车辆的详细信息,并允许他们验证他们是否正在使用预定的车辆。

在过去的6个月中,以下代码已经有效(并将继续这样做)。当用户输入17个字符时,我调用一个名为“lookupVIN”的方法,传递相关信息,并将验证信息返回给用户。

问题是,我有一些报告,当用户进入屏幕时(txtVIN是页面最初加载时屏幕上唯一的文本框),浏览器会立即锁定。我问过什么浏览器,我已经被告知IE11 \ Win 8和Chrome \ Win 7.我的想法是这个代码进入循环 - 即使用户还没有在txtVIN文本框中输入单个字符

是否有任何理由应根据上述情况更改此代码?是否有任何“安全检查”我可以执行以确保循环不被消耗?欢迎任何想法,谢谢!

//Note, all code below is using jQuery 1.10.2
var VinLength = 17;

$('#txtVIN').bind('input propertychange', function (e) {
    if (!e) { e = window.event; }
    //Ignore konami code...
    if ((e.keyCode == undefined) || (e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40 && e.keyCode != 8 && e.keyCode != 46)) {
        scrubVIN('#txtVIN'); //performs trim and such..

        if ($(this).val().length == VinLength) {
            lookupVIN($('#txtVIN').val(), $('#hidDIN').val()); //Performs VIN lookup
        }
    }
});

0 个答案:

没有答案