jQuery自动完成源未更新

时间:2019-01-17 06:27:06

标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete

我正在使用class StateViewHolder extends RecyclerView.ViewHolder { private StateAdapterBinding stateAdapterBinding; private StateClickListener stateClickListener; StateViewHolder(StateAdapterBinding stateAdapterBinding, StateClickListener stateClickListener) { super(stateAdapterBinding.getRoot()); this.stateAdapterBinding = stateAdapterBinding; this.stateClickListener = stateClickListener; } public void bind(State state, int position) { stateAdapterBinding.setStateModel(state); stateAdapterBinding.setStateHandler(stateClickListener); stateAdapterBinding.getRoot().setTag(R.id.lnrHome, position); stateAdapterBinding.getRoot().setTag(state); stateAdapterBinding.executePendingBindings(); } 插件。

这是我实例化自动完成插件的方式。

jquery-ui autocomplete

在下拉菜单更改中,我正在尝试更改选项:

//autofill
$( "#TextArea" ).autocomplete({
    source: "search.php?option="+ option.toLowerCase(),
    minLength: 3
});

我从下面的问题中获得了更新源字符串的代码。

Jquery: Possible to dynamically change source of Autocomplete widget?

但是,这种解决方案似乎对我不起作用。

即使更改下拉菜单中的选项,我仍然会获得第一个选定的选项。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

建议以下内容:

$("#TextArea").autocomplete({
    source: function(req, resp){
      var option = $('#Options option:selected').val().toLowerCase();
      $.ajax({
        cache: false,
        url: "search.php",
        data: {
          option: option,
          term: req.term
        },
        dataType: "json",
        success: function(data){
          resp(data);
        }
      });
    },
    minLength: 3
});

我认为一个问题是,如果#Options<select>元素,则需要找到所选的子元素:

$("#Options option:selected")

这可确保您拥有正确的对象,然后可以在其上调用.val()。如果您在这里需要更多帮助,请使用MCVE更新您的信息:https://stackoverflow.com/help/mcve

这可以为您解决问题。如果没有,请继续。

第二,为了确保您不缓存,我们可以执行更手动的源捕获。

  

使用字符串时,自动完成插件会期望该字符串指向将返回JSON数据的URL资源。它可以在同一主机上,也可以在其他主机上(必须支持CORS)。 Autocomplete插件不会过滤结果,而是会在查询字符串中添加一个term字段,服务器端脚本应使用该字段来过滤结果。

因此,我们使用某些添加的设置来复制相同的功能。因此,每次检查源时,都会检查选项并发送术语。我们将以JSON格式返回数据,并将其发送回Autocomplete进行显示。

希望有帮助。