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

时间:2016-09-12 11:28:56

标签: jquery 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

2 个答案:

答案 0 :(得分:1)

我有类似的问题,并设法通过以下补丁进行修复。 (这是针对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 () {

答案 1 :(得分:0)

我有类似的问题。我需要在页面重新加载后设置一个值。我想,我的解决方法也可以帮到你。但也许有人知道更好的方法吗?

我使用ajax结果初始化applicationWillEnterForeground框(在示例代码'12345'中):

select2

然后我设置了值并触发了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 框中设置了ajax值。 我不是百分百肯定,如果这是你想要实现的目标。或者你真的需要按下按下的回车键吗?如果这个解决方案对您有帮助,请告诉我。感谢。