当前位置: 首页 > 知识库问答 >
问题:

如何触发jQuery自动完成点击输入现有值和空输入的默认结果

蒲寂离
2023-03-14

我有以下自动完成脚本,通过输入至少1个字符到搜索输入工作。

<!-- Autocomplete search -->
    $('#autocomplete_game_search').click(function () {
        $( "#autocomplete_game_search" ).autocomplete({
            source: function( request, response ) {
                // Fetch data
                $.ajax({
                    url:"{{route('autocomplete-game-search')}}",
                    type: 'post',
                    dataType: "json",
                    data: {
                        search: request.term
                    },
                    success: function( data ) {
                        response( data );
                    }
                });
            },
            // minLength: 1,
            select: function (event, ui) {
                return false;
            }
        }).data('ui-autocomplete')._renderItem = function(ul, item){
            return $("<li class='ui-autocomplete-row'></li>")
                .data("item.autocomplete", item)
                .append(item.label)
                .appendTo(ul);
        };
    }

我想通过显示一个默认的搜索结果来改进这个搜索,点击空输入,然后删除所有的搜索文本。

此外,我需要通过单击搜索输入来显示搜索输入中现有文本的搜索结果。现在如果我搜索一个文本,在输入外单击,然后再次在输入中单击,以前的搜索将不会再次显示,我必须先键入更多文本或删除文本。

我能够用以下代码捕获“使用现有文本单击事件”和“空输入单击事件”:

<!-- Autocomplete search -->
    $('#autocomplete_game_search').click(function () {
        var clicksearch = 0;
        $( "#autocomplete_game_search" ).autocomplete({
            source: function( request, response ) {
                clicksearch = 1;
                // Fetch data
                $.ajax({
                    url:"{{route('autocomplete-game-search')}}",
                    type: 'post',
                    dataType: "json",
                    data: {
                        search: request.term
                    },
                    success: function( data ) {
                        response( data );
                    }
                });
            },
            // minLength: 1,
            select: function (event, ui) {
                return false;
            }
        }).data('ui-autocomplete')._renderItem = function(ul, item){
            return $("<li class='ui-autocomplete-row'></li>")
                .data("item.autocomplete", item)
                .append(item.label)
                .appendTo(ul);
        };

        // Ajax search on click or full delete
        if(clicksearch === 0){
            // Check if search text available
            var term = $("#autocomplete_game_search").val();
            // Ajax search on click previous search text
            if(term !== ''){
                $.ajax({
                    url:"{{route('autocomplete-game-search')}}",
                    type: 'post',
                    dataType: "json",
                    data: {
                        search: term
                    },
                    success: function( data ) {
                        alert('click on text');
                    }
                });
            }
            else{
                // Ajax search on empty search text
                $.ajax({
                    url:"{{route('autocomplete-game-search')}}",
                    type: 'post',
                    dataType: "json",
                    data: {
                        search: ''
                    },
                    success: function( data ) {
                        alert('empty text')
                    }
                });
            }
        }
    }

我现在的问题是,我不知道如何在我编写警报的地方触发自动完成。我已经尝试了很多方法,但是我找不到使用ajax调用中的“数据”调用autocomplete的正确语法。

共有1个答案

闻人思聪
2023-03-14

您可以使用bind这样的事件. bind('焦点',函数(){$(this).自动完成("搜索"); } );

试试代码。

$('#autocomplete_game_search').click(function () {
    var clicksearch = 0;
    $( "#autocomplete_game_search" ).autocomplete({
        source: function( request, response ) {
            clicksearch = 1;
            // Fetch data
            $.ajax({
                url:"{{route('autocomplete-game-search')}}",
                type: 'post',
                dataType: "json",
                data: {
                    search: request.term
                },
                success: function( data ) {
                    response( data );
                }
            });
        },
        // minLength: 1,
        select: function (event, ui) {
            return false;
        }
    }).bind('focus', function(){ 
        $(this).autocomplete("search"); 
    }).data('ui-autocomplete')._renderItem = function(ul, item){
        return $("<li class='ui-autocomplete-row'></li>")
            .data("item.autocomplete", item)
            .append(item.label)
            .appendTo(ul);
    };

    // Ajax search on click or full delete
    if(clicksearch === 0){
        // Check if search text available
        var term = $("#autocomplete_game_search").val();
        // Ajax search on click previous search text
        if(term !== ''){
            $.ajax({
                url:"{{route('autocomplete-game-search')}}",
                type: 'post',
                dataType: "json",
                data: {
                    search: term
                },
                success: function( data ) {
                    alert('click on text');
                }
            });
        }
        else{
            // Ajax search on empty search text
            $.ajax({
                url:"{{route('autocomplete-game-search')}}",
                type: 'post',
                dataType: "json",
                data: {
                    search: ''
                },
                success: function( data ) {
                    alert('empty text')
                }
            });
        }
    }
}
 类似资料:
  • 本文向大家介绍jQuery实现用户输入自动完成功能,包括了jQuery实现用户输入自动完成功能的使用技巧和注意事项,需要的朋友参考一下 利用jQuery UI中Auto-complete插件实现输入自动完成功能,大家在使用诸如淘宝、京东等电商平台搜索商品时,往往只要输入商品的一些特殊字符,就可以显示出和该字符相近的列表菜单,用户使用鼠标或者键盘方向键就可以快速选择,实现了很好的用户体验。 1.最简

  • 我试图清除一个输入的值取决于它是否找到一个id如果它找到一个现有的id js更新的值的输入但如果它不保持最后一个找到但我需要有明确的值,有人能告诉我怎么了吗:

  • 第一个帖子!和一个java的noob*随便! 我知道有很多关于这个话题的帖子,我已经读过了…我就是解决不了。 我有一个非常简单的HTML表单,有静态输入和动态创建的输入。 HTML自动完成 HTML表单 null AddInput.js 所以问题很简单…给定这些代码,我如何在每个新生成的输入中实现自动完成。 事先多谢。

  • 问题内容: 这可能是一个愚蠢的问题,但是由于找不到答案,我不得不提出这个问题。 在交互式python中,我想处理一条消息: 一切正常,但是…如何阻止它获取输入并将其保存到message变量中?使用ctrl + c停止将停止整个过程,因此没有输入要保存在任何地方。我想我找不到一个简单的答案… 问题答案: 对于基于Unix的系统: 您好,您可以录音: 通过发送EOF关闭标准输入(stdin)。 范例:

  • 问题内容: 但它不起作用,如何设置默认值? 问题答案: 日期应采用格式。一位数的日期和月份应填充0。一月是01。 从文档中: 代表日期的字符串。 值:RFC3339中定义的有效完整日期,另外具有年份部分为四位或更多位数字表示大于0的数字的资格。 您的代码应更改为:

  • 我在组件中有输入: 模板是: 问题是,如果< code >申请人没有对象< code >代表,申请就会失败。 如果没有,如何设置默认值? 这样地: 我需要始终有< code >类型的< code >代表。 这里还介绍了如何避免错误: