php - 我可以在 jquery 中对 ajaxlivesearch.com 函数使用一些建议

标签 php jquery mysql ajax livesearch

我在 ajaxlivesearch.com 的 livesearch.com 功能中包含一个搜索栏

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

我认为问题出在这些 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
    }
});

希望有人能帮帮我

干杯!

最佳答案

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

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

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

$("#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'";

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

关于php - 我可以在 jquery 中对 ajaxlivesearch.com 函数使用一些建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408747/

相关文章:

php - 将不同值存储在一列中时对搜索结果进行分组

php - preg_match 用户名验证正则表达式允许 > 和 < 尽管这些字符未列入白名单

javascript - 填充列表元素中的空白区域

mysql - #1235 - 此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

尝试停止其服务时出现 MySQL-Linux 错误

php - 主键上奇怪的重复输入错误

php - Laravel:更改函数名称时 belongsTo 不起作用

javascript - Fancytree - 将新元素添加到树节点(日期、注释等)

javascript - 阻止输入文本字段中的字符,将输入镜像到 span 或 div

mysql - 如何使用 bash 脚本写入 mysql 表