jQuery Autocomplete получить из txt массив или привязка к файлу
Посмотреть код в работе
по ссылке выше можете посмотреть все необходимое... у меня источник данных - текстовый файл 1.txt в нем текстовые данные представлены в таком виде: Один Два Три Четыре и т.д. подскажите, где нужно изменить, чтобы данные считывало из файла.... или как второй вариант - записать содержимое всего файла в массив (но там 7к записей, будет большая нагрузка на сервак) |
Цитата:
|
я не хочу лишний раз дергать бд просто
для этого я создал текстовый файлик |
вычитать файл в переменную можно так
var jqxhr = $.get( "1.txt", function())
.done(function(data) {
//файл будет в переменной data
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ', ' + error;
console.log( "Request Failed: " + err);
});
|
спасибо, сделал по аналогии, как было
что-то еще нужно поменять - так не работает по идее нужно внести в массив данные по одному, и каждый элемент начинающийся с новой строки как новый элемент массива у меня есть рабочий код, который берет данные прямо из текстового файла:
$(document).ready(function()
{
$("#file").autocomplete("autocomplete.dat", {
autoFill:false,
cacheLength:2,
delay:1,
matchCase:false,
matchContains:false,
matchSubset:false,
minChars:2,
mustMatch:false,
scroll:false,
maxItemsToShow:30
});
но в новом коде такое вариант не канает, я не знаю где поменять (менял по аналогии и не работает)
<script language="javascript">
var jqxhr = $.get( "1.txt", function())
.done(function(data) {
})
jqxhr.sort();
function monkeyPatchAutocomplete() {
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term, "i") ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:red;'>" + this.term + "</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
$(document).ready(function() {
monkeyPatchAutocomplete();
$("#input1").autocomplete({
source: function(req, responseFn) {
addMessage("Поск: '" + req.term);
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep(jqxhr, function(item,index){
//addMessage(" sniffing: '" + item + "'<br/>");
return matcher.test(item);
});
addMessage("Количество: " + a.length + " элемента(ов)");
responseFn( a );
},
select: function(value, data){
if (typeof data == "undefined") {
addMessage('Количество: ' + value);
}else {
addMessage('Вы выбрали: ' + data.item.value);
}
}
});
});
function addMessage(msg){
$('#msgs').empty();
$('#msgs').append(msg);
}
</script>
|
дык тогда get не нужен, пишите
забирайте через .autocomplete("1.txt", { |
в примере кода выше добавляю в 20-ю строку
$("#input1").autocomplete("1.txt",{ но не работает |
все нарыл как переводить в массив
var cardRules = new Array();
$.get('autocomplete.dat', function(data){
cardRules = data.split('\n');
console.log(cardRules);
});
теперь все работает вроде |
но, мне интересно как из файла вытянуть в моем случае
м.б. кто подскажет |
| Часовой пояс GMT +3, время: 16:20. |