簡體   English   中英

jQuery-ui-autocomplete用於多個值且逗號分隔的項不起作用

[英]Jquery-ui-autocomplete for multiple values with comma separated items not working

我正在使用jquery-ui-autocomplete,但是我的要求是使用逗號分隔多個值,我編寫的代碼僅適用於單個值,我嘗試過這種方法,但這對我沒有用,因為我的要求很少

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);
        }
    }
});

只需對您的代碼進行少量更改,然后對我來說就可以正常工作。

  $( 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; } } 
 <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代碼

while($ row = mysqli_fetch_array($ result)){$ response [] => array(“ value” => $ row ['userid'],“ label” => $ row ['username']); }

回聲json_encode($ response);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM