//search
jQuery(document).ready(function($) {
// Set the Options for "Bloodhound" suggestion engine
var engine = new Bloodhound({
prefetch: {
url: '/search',
},
remote: {
url: '/find?q=%QUERY%',
wildcard: '%QUERY%'
},
datumTokenizer: Bloodhound.tokenizers.whitespace('q'),
queryTokenizer: Bloodhound.tokenizers.whitespace
});
$(".search-input").typeahead({
hint: true,
highlight: true,
minLength: 1
}, {
source: engine.ttAdapter(),
name: 'searchresult',
display: 'name', //what to display
templates: {
empty: [
'<div class="list-group search-results-dropdown"><div class="list-group-item">Nothing found.</div></div>'
],
header: [
'<div class="list-group search-results-dropdown">'
],
suggestion: function (data) {
return '<a href="/courses/' + data.slug + '" class="list-group-item">' + data.name + '</a>'
}
}
}).on('keyup', this, function (event) {
if (event.keyCode == 13) {
var a = this.value;
a = string_to_slug(a);
$.ajax({
url: "{{url('getCourse')}}",
data:
{'slug':a,
"_token": "{{ csrf_token() }}"},
type: "POST",
success: function (data) {
console.log(data);
if (data.slug === undefined) {
}else{
window.location.href = "/courses/" + data.slug ;
}
},
error: function (xhr, ajaxOptions, thrownError) {
},
complete: function () {
}
});
}
});
});
форма
<form>
<div class="input-group">
<input type="text" class="form-control search-input" placeholder="Search...">
</div>
</form>
function string_to_slug (str) {
str = str.replace(/^\s+|\s+$/g, ''); // trim
str = str.toLowerCase();
// remove accents, swap ñ for n, etc
var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
var to = "aaaaeeeeiiiioooouuuunc------";
for (var i=0, l=from.length ; i<l ; i++) {
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by -
.replace(/-+/g, '-'); // collapse dashes
return str;
}
Любая другая опция, чтобы сделать то же самое. Я пытался использовать невидимую кнопку отправки, но все еще не работает. Аякс занимает много времени, чтобы выполнить задачу.Предположение, что я взял значение из database.but, в случае нажатия клавиши ввода, я не получил это значение. Поэтому я использую метод slugify, чтобы сделать кусок данных, который у меня есть. Но мне нужно получить значение, полученное из базы данных в виде ссылки ине используйте ajax для этого и используйте это при нажатии клавиши ввода