У меня есть панель поиска, включенная в функциональность livesearch.com от ajaxlivesearch.com
Проблема в том, что когда я нажимаю на результат, ничего не происходит. Я хочу отправить запрос и показать страницу результатов, когда нажимаю на результат. Прежде, чем я включил функцию ajaxlivesearch, я просто набрал ключевое слово и нажал enter, а затем появилась моя страница результатов, это происходит с запросом. Но после того, как я включил функцию 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
}
});
Я надеюсь, что кто-то может помочь мне
Ура!
Прежде чем что-то делать, перейдите в файл 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>';
И добавьте действие в эту форму, так как это то, что активируется, когда вы нажимаете ввод в строке поиска. Так сделайте это так:
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'";
Мне потребовалось некоторое время, чтобы понять это. Но если вы все еще ищете ответ, это сработало для меня. Дайте мне знать, как все прошло!
Других решений пока нет …