Select 使用扫描器将条码扫描到 select 选项 aps classic javascript 时的框验证

Select Box Validations when using scanner to scan barcode to select option aps classic javascript

我在经典 ASP 页面中有一个 select 框,其中包含条码值。用户将在具有条形码扫描仪的企业设备上访问该页面。当页面加载时,它聚焦于 select 框,用户将扫描条码以 select 列表中的项目。

我的 select 框如下所示

<select name='barcode' id='barcode'>
<option value='1111'>1111</option>
<option value='2222'>2222</option>
<option value='3333'>3333</option>
<option value='4444'>4444</option>
</select>

我遇到的问题是,如果用户扫描了不在列表中的条码(例如值为 5555 的条码),但它具有与 select 相同的字符长度列表中的第一项(例如,扫描 5555 的条码将具有条码 1111 selected.

有没有一种方法可以捕捉到正在扫描的值,并将其与列表中的选项进行比较,如果不匹配则发出警报?

我已经在这个问题上坚持了一个多星期了,我就是做错了。如果可能的话,我正在寻找 JavaScript 解决方案,因为该项目目前是在 ASP Classic 和 JavaScript 中完成的。如果有任何帮助或意见,我将不胜感激。

将第一个选项值设为空白,并以扫描条形码作为提示。

<select name='barcode' id='barcode' onkeypress='validate(event, this);'>
<option value='' selected='selected'>Scan a barcode</option>
<option value='1111'>1111</option>
<option value='2222'>2222</option>
<option value='3333'>3333</option>
<option value='4444'>4444</option>
</select>
<input type='hidden' id='bc_entered' />

现在包括这个JavaScript

<script type="text/javascript">
function validate(evt, elem)
{
    var i;
    var match = false;
    var barcode = document.getElementById('bc_entered');

    var evt = evt || window.event;
    var code = evt.keyCode || evt.which;

    if(code == 13) //scanner should append CR
    {
        for(i=0; i<elem.options.length; i++)
        {
            if(barcode.value == elem.options[i].text)
            {
                match = true;
                break;
            }
        }
        if(match)
        {
            elem.selectedIndex = i;
        }
        else
        {
            elem.selectedIndex = 0;
            alert("Barcode " + barcode.value + " not found!");
        }
    }
    else
    {
        barcode.value += code;  //Append the character to hidden field
    }
}
</script>