1

我有一个搜索栏,其中包含来自 ajaxlivesearch.com 的 livesearch.com 功能

问题是当我点击结果时没有任何反应。我想发送查询并在单击结果时显示结果页面。在我包含 ajaxlivesearch 功能之前,我只是输入了一个关键字并按下回车键,然后我的结果页面出现了,这发生在一个查询中。但是在我包含 ajaxlivesearch 功能后,按 Enter 不再是一个选项,没有任何反应。

我认为问题出在这些 jQuery 行中;

jQuery(".mySearch").ajaxlivesearch({
    loaded_at: <?php echo $time; ?>,
    token: <?php echo "'" . $token . "'"; ?>,
    maxInput: <?php echo $maxInputLength; ?>,
    onResultClick: function(e, data) {
        // get the index 1 (second column) value
        var selectedOne = jQuery(data.selected).find('td').eq('1').text();

        // set the input value
        jQuery('.mySearch').val(selectedOne);

        // hide the result
        jQuery(".mySearch").trigger('ajaxlivesearch:hide_result');
    },
    onResultEnter: function(e, data) {
        // do whatever you want
        // jQuery(".mySearch").trigger('ajaxlivesearch:search', {query: 'test'});
    },
    onAjaxComplete: function(e, data) {
        // do whatever you want
    }
});

我希望有人可以帮助我

干杯!

4

1 回答 1

0

在你做任何事情之前,去 ajaxlivesearch.js 文件,找到这行代码 ->

// disable the form submit on pressing enter
        form.submit(function () {
            return false;
        });

基本上,当您按下回车键时,它会禁用任何形式发生的事情,这与您尝试做的事情相反。所以很明显你需要改变它,例如。

$("#search_ls_query").submit(function(){
            return true;
        });

现在,(这不是一个完全重要的补充,但是,在您添加到索引页面的“onResultEnter”区域中提交表单。例如。

jQuery(document).ready(function(){
jQuery(".mySearch").ajaxlivesearch({
    loaded_at: <?php echo $time; ?>,
    token: <?php echo "'" . $token . "'"; ?>,
    maxInput: <?php echo $maxInputLength; ?>,
    onResultClick: function(e, data) {
        // get the index 0 (1st column) value
        var selectedOne = jQuery(data.selected).find('td').eq('0').text();

        // set the input value
        jQuery('.mySearch').val(selectedOne);

        // hide the result
        jQuery(".mySearch").trigger('ajaxlivesearch:hide_result');
    },

    onResultEnter: function(e, data) {
        $("#search_ls_query").submit();

    },
    /*  #search_ls_query is the id of the default form that is submitted when you press enter (Find in ajaxlivesearch.js)*/

    onAjaxComplete: function(e, data) {
    }
});

})

现在转到 ajaxlivesearch.js 文件并找到以下内容:

var wrapper = '<div class="' + ls.container_class + '">' +
                '<form accept-charset="UTF-8" class="' + ls.form_class + '" id="' + ls.form_class + '_' + elem_id + '" name="ls_form">' +
                '</form>' +
                '</div>';

并在此表单中添加一个操作,因为这是您在搜索栏中按 Enter 时激活的操作。所以让它这样:

var wrapper = '<div class="' + ls.container_class + '">' +
                '<form accept-charset="UTF-8" action="search.php" class="' + ls.form_class + '" id="' + ls.form_class + '_' + elem_id + '" name="ls_form">' +
                '</form>' +
                '</div>';

这样,它实际上有一个将值发送到的目的地。所以要发送的值的名称是“ls_query”,因此您在栏中输入的任何内容现在都将插入到“ls_query”的值中。因此,一旦您按下回车键并到达您的新页面,您就可以使用此变量来过滤您的搜索选项,或者您需要的任何内容。例如,在您的搜索页面上,您可以编写:

$ls_query = secure($_GET['ls_query'],$mysqli);      

    $sql = "SELECT *
    FROM users
    WHERE username   ='$ls_query'";

这也花了我一段时间才弄清楚。但是,如果您仍在寻找答案,那么这对我有用。让我知道进展如何!

于 2016-05-17T17:25:47.747 回答