【问题标题】:Laravel jQuery auto complete textLaravel jQuery 自动完成文本
【发布时间】:2021-05-10 17:46:01
【问题描述】:

我在使用 jQuery 从自动完成文本中显示主键时遇到问题。

我从这个来源修改了代码:https://www.webslesson.info/2018/06/ajax-autocomplete-textbox-in-laravel-using-jquery.html

不同之处在于,我尝试从我选择的自动完成文本中添加主键,然后从控制器发送到 HTML 代码以查看。

这是我的控制器(我认为这里没有问题)

function getProject(Request $request)
{
    if($request->get('query'))
    {
        $query = $request->get('query');
        $listProject = DB::table('project')
            ->select('PK_Project', 'projectName')
            ->where('projectName', 'ILIKE', "%{$query}%")
            ->get();

        $data = array(
            'listProject'   => $listProject,
        );

        echo json_encode($data);
    }
}

我的看法:

<script>
    $(document).ready(function(){
        $('#projectname').keyup(function(){ 
            var query = $(this).val();
            var listProject = '';
            if(query != '')
            {
                var _token = $('input[name="_token"]').val();
                $.ajax({
                    url:"{{ route('getProject') }}",
                    method:"POST",
                    data:{query:query, _token:_token},
                    dataType:'JSON',
                    success:function(data){
                        $('#projectList').empty();
                        $('#projectList').fadeIn();  
                        $('#projectList').append(
                            '<ul class= "dropdown-menu" style= "display:block; position:relative">'
                            );
                        
                        data.listProject.forEach(element => {
                            // I can get project name list here
                            $('#projectList').append( "<li><a href='#'>" + element.projectName + "</a></li>");
                            // I can get project Primary Key list here
                            $('#pkproject').append(element.PK_Project);
                        });
                        
                        $('#projectList').append('</ul>');
                    }
                });
            }
        });
    
        $(document).on('click', 'li', function(){  
            $('#projectname').val($(this).text()); // I can get project name that I clicked 
            $('#pkproject').val($(this).text());  // This is what I asked (how?)
            $('#projectList').fadeOut();  
        });  
    
    });
</script>

第二个问题是如何修复下拉菜单(文本在框外)

【问题讨论】:

    标签: jquery ajax laravel autocomplete


    【解决方案1】:

    我认为 getProject 方法存在语法错误

     ->where('projectName', 'ILIKE', "%{$query}%")
    

    应该是

     ->where('projectName', 'LIKE', "%{$query}%")
    

    【讨论】:

    • 谢谢你的回答。 LIKE 和 ILIKE 之间的区别是区分大小写的。 LIKE 区分大小写。 ILIKE 不区分大小写。
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多