【问题标题】:Submitting a form after x amount of characters在 x 个字符后提交表单
【发布时间】:2013-04-29 14:08:19
【问题描述】:

我正在创建一个简单的工具以在我的工作中使用,以创建所有已扫描 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”的无序列表。

【问题讨论】:

  • 您是否尝试过使用.change() 事件?
  • 找出这两种情况下哪个事件是共同的并绑定到它,每次发生所述事件时检查值的长度。到 12 岁时,继续。
  • 请注意,也可以将扫描枪配置为像“您的工作”中的输入一样进行输入。大多数扫描枪(我使用过的所有扫描枪)都有改变数据输出方式的方法。

标签: jquery forms form-submit


【解决方案1】:

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

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

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

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

});

【讨论】:

  • 对于文本输入元素,change 事件被推迟到元素失去焦点,所以它不会被触发无论何时改变值无论何时改变值离开焦点后
【解决方案2】:

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

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

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

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

响应其他答案,change 事件不会被触发,直到输入失去焦点。

【讨论】:

    【解决方案3】:

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

    $('#eanInput').bind('change paste input blur', function(){
        var vallength = $(this).val().length;
        if (vallength == 12){
            $('#eanForm').submit();
        }
    });
    

    【讨论】:

    • change 事件只有在失去焦点后才会触发
    【解决方案4】:

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

    感谢大家的快速回复。你们这些人是混蛋。

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 2015-01-20
      • 2017-08-17
      • 1970-01-01
      • 2013-03-18
      • 2021-09-01
      • 2010-11-17
      相关资源
      最近更新 更多