2

我正在创建一个简单的工具来在我的工作中使用,以创建所有被扫描的 EAN 代码的无序列表。到目前为止,我有一个工作表单,可以在输入字段中输入 12 个字符后自动提交。然而,问题是我在工作中使用的扫描仪不会一次在输入字段中输入一个字符,而是一次将整个字符群扔到字段中。这样,在 12 个字符后自动提交的功能不再起作用,因为它会查找 keydown。

有没有可能像我打算的那样进行这项工作?

这是我已经在工作的 jQuery 部分。

 $(document).ready(function() {

$('#eanInput').keydown(function(){

    var vallength = $(this).val().length;

    if (vallength == 12){
        $('#eanForm').submit();
    }

});

$('#eanForm').on('submit', function(event){

    event.preventDefault();

    $('#eanList').append('<li>' + $('#eanInput').val() + '</li>');

    $('#eanInput').val('');

});    });    

当然还有一个名为“eanForm”的简单表单,其中包含一个名为“eanInput”的输入字段和一个名为“eanList”的无序列表。

4

4 回答 4

1

条码扫描器通常会触发一个pasteinput事件

$('#eanInput').bind('paste input', function () {
});

如果这还不够,您还可以捕捉几乎所有可用事件以找到合适的事件:

$('#eanInput').bind('DOMAttrModified textInput input change keypress paste focus', function () {
});

作为对其他答案的响应,在输入失去焦点之前change不会触发事件。

于 2013-04-29T14:13:22.107 回答
1

只需在每次更改输入控件后检查:

$('#eanInput').bind('change paste input blur', function(){
    var vallength = $(this).val().length;
    if (vallength == 12){
        $('#eanForm').submit();
    }
});
于 2013-04-29T14:10:36.603 回答
1

改用change事件,因为即使值发生更改,它也会被触发。

$('#eanInput').change(function(){

    var vallength = $(this).val().length;

    if (vallength == 12){
        $('#eanForm').submit();
    }

});
于 2013-04-29T14:11:03.260 回答
0

好的,所以我按照 Zakinster 的建议使用了整个事件集,并将长度 == 12 更改为长度 >=12。现在它似乎像我想要的那样工作。

我要感谢大家的快速回复。你们这些人是shiz。

<3

于 2013-04-29T14:24:24.987 回答