当前位置: 首页 > 面试题库 >

Select2 Ajax方法未选择

司空鸿禧
2023-03-14
问题内容

好的,我确定这里有一个简单的设置错误,但我不是100%是错的。

因此,我尝试使用Select2
AJAX方法作为用户搜索数据库并选择结果的方式。通话本身返回了结果,但是不允许我从列表中选择答案。它似乎也不允许您在悬停或上/下箭头上“选择”它。因此,事不宜迟,这是我的代码:

index.html

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
        <link rel="stylesheet" type="text/css" href="select2/select2.css" media="screen" />
        <script src="select2/select2.js"></script>
        <script src="select.js"></script>
    </head>
    <body>
        <input type="text" style="width: 500px" class="select2">
    </body>
</html>

select.js

jQuery(function() {

  var formatSelection = function(bond) {
    console.log(bond)
    return bond.name
  }

  var formatResult = function(bond) {
    return '<div class="select2-user-result">' + bond.name + '</div>'
  }

  var initSelection = function(elem, cb) {
    console.log(elem)
    return elem
  }

    $('.select2').select2({
      placeholder: "Policy Name",
      minimumInputLength: 3,
      multiple: false,
      quietMillis: 100,
      ajax: {
        url: "http://localhost:3000/search",
        dataType: 'json',
        type: 'POST',
        data: function(term, page) {
          return {
            search: term,
            page: page || 1
          }
        },
        results: function(bond, page) {
          return {results: bond.results, more: (bond.results && bond.results.length == 10 ? true: false)}
        }
      },
      formatResult: formatResult,
      formatSelection: formatSelection,
      initSelection: initSelection
    })
})

JSON回应

{
  error: null,
  results: [
    {
      name: 'Some Name',
      _id: 'Some Id'
    },
    {
      name: 'Some Name',
      _id: 'Some Id'
    }
  ]
}

一切似乎都能正确输入,但是我无法真正选择答案并将其输入框中。我的代码中是否存在问题?


问题答案:

在查看了另一个答案之后,似乎我也需要在每次调用时都传递id字段,否则它将禁用输入。

修复它的示例代码:

$('.select2').select2({
  placeholder: "Policy Name",
  minimumInputLength: 3,
  multiple: false,
  quietMillis: 100,
  id: function(bond){ return bond._id; },
  ajax: {
    url: "http://localhost:3000/search",
    dataType: 'json',
    type: 'POST',
    data: function(term, page) {
      return {
        search: term,
        page: page || 1
      }
    },
    results: function(bond, page) {
      return {results: bond.results, more: (bond.results && bond.results.length == 10 ? true: false)}
    }
  },
  formatResult: formatResult,
  formatSelection: formatSelection,
  initSelection: initSelection
})

既然这总是被推崇,我会详细说明。.select2()方法期望id所有结果上都有唯一的字段。幸运的是,有一种解决方法。该id选项接受如下功能:

function( <INDIVIDUAL_RESULT> ) {
  // Expects you to return a unique identifier.
  // Ideally this should be from the results of the $.ajax() call. 
}

由于我的唯一标识符是<RESULT>._id,所以我只是return <RESULT>._id;



 类似资料:
  • 这是有道理的,谢天谢地,还有一个选项可以生成接受可空参数的方法。此选项生成一个附加的方法,该方法接受一个可为空的参数。但是,不管有没有这种方法,Mapstruct似乎都失败了。 作为一种变通方法,我实现了这个令人讨厌的方法(但在这一点上,我宁愿自己实现映射方法): 有没有什么方法可以让Mapstruct寻找重载的方法(或者先看到“正确的”方法)?我是走错路了还是错过了什么?谢了!

  • 我在摆弄方法,并在寻找,如果我创建两个名为“hello”的方法,使用它们想要的不同对象,并将“null”传递给该方法,将执行哪个方法: 每次输出都是“再见”,但我仍然不明白这背后的逻辑。在与谷歌进行了简短的研究后,没有任何解释,我决定在这里提出这个问题。 我希望有人可以解释选择算法或给我一个链接到一个解释。

  • 问题内容: 给出以下代码: 输出(意外)如下: 问题出在第一行,我希望与其他两行相同。此外,我发誓直到最近,编译器仍会为我的普通调用给出模糊的调用警告。但是,使用Java 5和6进行编译和测试会产生相同的结果。 这对我来说是一个重要的问题,因为我有很多代码都使用这种模式,即使用不同类型的重载“默认”参数来选择返回类型并推断所需的转换/解析。谁能解释这是怎么回事? 问题答案: Java始终以相同的方

  • 问题内容: 我试图弄清楚Java如何选择执行哪种方法: 我在这里学到的是 方法签名是根据编译时数据类型确定的 实际调用的方法取决于调用该方法的对象的动态类型。 基于此,前两个调用的结果符合预期。但是,我不理解示例3和4的结果。 它似乎是在Java语言规范中指定的,但我不理解。 问题答案: 但是,我不理解示例3和4的结果。 好吧,让我们单独看一下。 例子3 重要的部分是表达式和的 编译时 类型。 仅

  • 对于上面的modbus轮询查询,我没有得到哪个是crc值,以及使用了什么类型的crc。它是怎么来的,77是设备的id。请指引我。 我从轮询设备得到以下响应

  • 我有一些简单的枚举名:失败/成功的结果 我有一个函数,它什么也没有得到,但返回未来的结果, 我不喜欢我的解决方案,它看起来很凌乱,有更简单的吗? 返回 我想在这里做的是,如果返回None,那么func应该返回Future[Fail],否则调用db,这也返回一个case类的未来,并基于响应返回Fail/Success。 但我正在寻找一种超级时尚的斯卡拉方式,让它看起来不错:) 谢谢