如何配置ajax select2以使用条形码扫描器



我有一个ajax select2 (v 3.5.4)完美的工作,但现在我需要它与条形码扫描器的工作。我需要检测何时按下回车键。扫描器将代码插入select2输入,然后输入一个回车键。

问题是扫描仪太快了,ajax调用在按下回车键之前没有完成。

这是我到目前为止的代码:

$('#my_select').select2
    initSelection: (elm, callback) ->
      data =
        id: $(elm).data "record-id"
        name: $(elm).data "record-text"
      callback(data)
    ajax:
      url: url
      dataType: "jsonp"
      quietMillis: 100
      data: (term, page) ->
         query: term
         limit: 10
         page: page
      results: (data, page) ->
         more = (page * 10) < data.total
         results: data.records
         more: more

我有一个类似的问题,并设法修复它与以下补丁。(针对v4.0.2)

--- a/select2.js    2018-03-09 08:33:38.000000000 +0700
+++ b/select2.js    2018-05-04 10:38:22.605348402 +0700
@@ -896,7 +896,7 @@
     var $loading = this.option(loading);
     $loading.className += ' loading-results';
-    this.$results.prepend($loading);
+    this.$results.html($loading);
   };
   Results.prototype.hideLoading = function () {

我也遇到过类似的问题。我需要在页面重新加载后设置一个值。我想我的变通办法也能帮到你。但也许有人知道更好的方法?

我用ajax结果初始化了select2框(在您的示例代码'12345'中):

var selectionList = [{ id: '12345', text: '12345' }];
$("#my_select").select2({
                                data: selectionList
                            });

然后我设置了值并触发了change事件。

$("#my_select").val("12345").trigger("change");

之后,我再次初始化select2盒子与ajax加载。这是你上面发布的代码:

$('#my_select').select2
    initSelection: (elm, callback) ->
      data =
        id: $(elm).data "record-id"
        name: $(elm).data "record-text"
      callback(data)
    ajax:
      url: url
      dataType: "jsonp"
      quietMillis: 100
      data: (term, page) ->
         query: term
         limit: 10
         page: page
      results: (data, page) ->
         more = (page * 10) < data.total
         results: data.records
         more: more

通过这种方式,您已经在select2框中设置了ajax值。我不是百分之百确定,这是不是你想要的。或者你真的需要按回车键吗?如果这个解决方案对你有帮助,请让我知道。谢谢。

最新更新