首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery使用逗号分隔项不工作的多个值的自动完成

Jquery使用逗号分隔项不工作的多个值的自动完成
EN

Stack Overflow用户
提问于 2019-03-26 06:20:04
回答 1查看 1.5K关注 0票数 0

我正在使用jquery-ui-autocomplete,但我的要求是使用逗号分隔的多个值,我编写的代码只对单个值工作--我尝试了这一点--但这对我没有用,我几乎没有这样的需求。

代码语言:javascript
复制
1) when search/autocomplate  in text box it should get username and id of that user but id not show to front end just binded with user names
2)selected usernames show in text box with multiple values using comma separated (currently it is working for single user only comma is appending but multiple values not)
3) whenever selected any username  id associated with that user append into hidden field  " name='hidden_id[]'  "

<input type="text" name="search_val" class="form-control search_val"/>

<input type="hidden" name="hidden_id[]" class="hidden_id" value=""/>

<script>
$(function () {
    $(document).ready(function () {
        function split(val) {
            return val.split(/,\s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }
        $(".search_asset").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "<?php echo SITE_URL . 'ajax/get_users'; ?>",
                    dataType: "json",
                    data: {
                        term: request.term, request: 1
                    },
                    success: function (data) {
                        response(data);
                    }
                });
            },

            select: function (event, ui) {
                var terms = split(this.value);
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push(ui.item.value);
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(",");
                return false;
            }
        });

    });


    public function get_users() {
        $term = $_GET['term'];
        $result = $this -> db -> query("select userid,username from users WHERE username LIKE '%".$term."%' ") -> result();
        if (count($result) > 0) {
            foreach($result as $row)
            $arr_result[] = $row -> username;
            $arr_result[] = $row -> userid;
            echo json_encode($arr_result);
        }
    }
});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 10:29:42

只需对您的代码做一些小小的更改,就可以对我进行此操作。

代码语言:javascript
复制
 $( function() {        
        $( ".search_val" ).autocomplete({
            source: function( request, response ) {
                
                var searchText = extractLast(request.term);
                $.ajax({
                    url: "<?php echo SITE_URL . 'ajax/get_users'; ?>",
                    type: 'get',
                    dataType: "json",
                    data: {
                        search: searchText
                    },
                    success: function( data ) {
                        response( data );
                    }
                });
            },focus: function() {                
                return false;
            },
            select: function( event, ui ) {
                var terms = split( $('.search_val').val() );
                
                terms.pop();               

               if(duplicate($('.search_val').val(), ui.item.label)){
                terms.push( ui.item.label );
                
                terms.push( "" );
                $('.search_val').val(terms.join( ", " ));            
                 }
                return false;
            }
           
        });
    });

    function split( val ) {
      return val.split( /,\s*/ );
    }
    function extractLast( term ) {
      return split( term ).pop();
    }
function duplicate(f,s){
  if( f.match(new RegExp("(?:^|,)"+s+"(?:,|$)"))) {
    	return false;
   }else{
	   return true;
  }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script
  src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
  <input type="text" name="search_val" class="form-control search_val"/>

更改php代码

而($row= mysqli_fetch_array($result) ){ $response[] =>数组(“value”=>$row‘’userid‘,“label”=>$row’‘username’);} 回声json_encode($response);

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

https://stackoverflow.com/questions/55350905

复制
相关文章

相似问题

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