将从条形码扫描的字符串切成2个输入框

时间:2018-10-18 10:28:35

标签: javascript jquery

  

HTML看起来像这样:

<div>
    <label class="sr-only" for="product">Product</label>
    <input id="product" type="text" placeholder="Product" maxlength="7" autofocus>

    <label class="sr-only" for="batch">Batch</label>
    <input id="batch" type="text" placeholder="Batch" maxlength="5">
</div>
  

jQuery如下所示:

 $('#product').on('keyup', function() {
    let product = $(this).val().slice(0, 7);
    let batch =  $(this).val().slice(9, 14);
    if ($(this).val() && $(this).val().length === 7) {
        $(this).val(product);
        $(this).next().focus().val(batch);
    }
});

当我扫描条形码时,它将读取此字符串WXYZ519 -8012456789

我需要对该字符串进行切片,以使带有inputid="product"的{​​{1}}获得的值分别为id="batch"WXYZ519,而没有连字符和空格在两者之间。

第一个输入确实获得了正确的值,但是我无法获得第二个输入来将正确的值切入其中。

有人可以告诉我我的代码为什么以及出什么问题吗?

1 个答案:

答案 0 :(得分:0)

如果您想获得整个字符串的第二半,您的范围似乎是错误的。

如果您更改

$(this).val().slice(9, 14);

$(this).val().slice(9, $(this).val().length);

它将包含一个从9开始并在该字符串的结尾处结束的字符串。


我认为另一个更清洁,更不易出错的替代方法是:

let split = $(this).val().split(" -");
let product = split[0];
let batch =  split[1];