首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery选择插件-将用户键入的输入发送到Ajax调用

JQuery选择插件-将用户键入的输入发送到Ajax调用
EN

Stack Overflow用户
提问于 2019-04-30 18:50:36
回答 1查看 2K关注 0票数 0

我试图填充下拉使用所选择的插件为多个选择。

我加了小提琴

http://jsfiddle.net/san1234/ymnj12xk/

我的目的是根据通过Ajax调用发送用户输入信函获得的JSON数据,在"select“标记中填充"options”标记。

为此,我需要知道如何在onkeyup上进行ajax调用,即如果用户输入"Am",我想将输入发送到Ajax调用并获得JSON响应,类似于"America“、”阿姆斯特丹“

我对此并不熟悉,我无法在“选择框”中提取用户键入的输入,以便在Ajax调用中将其作为请求实际发送。

我尝试过这样做,但是JS文件中的“自动完成”方法不起作用--怎么做呢?帮帮忙!

JS文件

代码语言:javascript
复制
$(".chosen-select").chosen();

$(".chosen-select-deselect").chosen({
  allow_single_deselect: true
});
$('.chosen-choices input').autocomplete({
  source: function(request, response) {
    $.ajax({

      url: "/someURL/" + request.term + "/",
      dataType: "json",
      beforeSend: function() {
        $('ul.chosen-results').empty();
      },
      success: function(data) {
        alert("Success!");
        response($.map(data, function(item) {

          $('ul.chosen-results').append('<li class="active-result">' + item.name + '</li>');
        }));
      }
    });
  }
});
代码语言:javascript
复制
<link href="http://harvesthq.github.io/chosen/chosen.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://harvesthq.github.io/chosen/chosen.jquery.js"></script>
<select class="chosen chosen-select" multiple="" data-placeholder="Choose a Country" style="width:200px">
    <option value="America">America</option>
     <option value="Amsterdam">Amsterdam</option>
      <option value="Australia">Australia</option>
    <option value="Dallas">Dallas</option>
    <option value="GHI">hij</option>
</select>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 17:09:19

我不知道您是在后端使用PHP,还是使用其他程序语言,但下面是我使用php和javascript的解决方案:

首先,您的javaScript:

代码语言:javascript
复制
//initialization of chosen select
$(".chosen-select").chosen({
  search_contains: true // an option to search between words
});
$(".chosen-select-deselect").chosen({
  allow_single_deselect: true
});

//ajax function to search a new value to the dropdown list
function _ajaxSearch (param){
  return $.ajax({
    url: "request.php",
    type: "POST",
    dataType: "json",
    data: {param:param}
  })
}
//key event to call our ajax call
$(".chosen-choices input").on('keyup',function(){
  var  param = $('.chosen-choices input').val();// get the pressed key
  _ajaxSearch(param)
  .done(function(response){
    var exists; // variable that returns a true if the value already exists in our dropdown list
    $.each(response,function(index, el) { //loop to check if the value exists inside the list
      $('#mySelect option').each(function(){
        if (this.value == el.key) {
          exists = true;
        }
      });
      if (!exists) {// if the value does not exists, added it to the list
        $("#mySelect").append("<option value="+el.key+">"+el.value+"</option>");
        var ChosenInputValue = $('.chosen-choices input').val();//get the current value of the search
        $("#mySelect").trigger("chosen:updated");//update the list
        $('.chosen-choices input').val(ChosenInputValue);//since the update method reset the input fill the input with the value already typed
      }
    });
  })
})

您的php文件:

代码语言:javascript
复制
if (isset($_POST["param"])) {// check is the param is set
$param = $_POST["param"]; // get the value of the param
$array  = array('JKL' => 'jkl' , 'MNO'=>'mno', 'PQR'=>'pqr','STU'=>'stu','VWX'=>'vwx','YZ'=>'yz' );//array of values
$matches = array();//array of matches
    foreach($array as $key=>$value){//loop to check the values
        //check for match.
        if(strpos($value, $param) !== false){
            //add to matches array.
            $matches[]= array ("key"=> $key,"value"=>$value);
        }
    }
//send the response using json format
echo json_encode($matches);
}

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55927094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档