extraParams в autocomplete
Здравствуйте, к сожалению мало знаком с javascript, поэтому не могу решить самостоятельно.
Суть проблемы заключается в том что, есть два поля: 1 Поле select с выбором района 2 input в выбором улицы, для него реализовано автодополнение Не могу передать value из select в extraParams для автодополнения.
<select name="distinct">
<option value="1">Левый</option>
<option value="2">Правый</option>
</select>
<input type="text" id="example1" />
<script type="text/javascript">
$(document).ready(function(){
// --- Автозаполнение ---
function liFormat (row, i, num) {
var result = row[0] + '<p class=qnt>' + row[1] + ' тыс.чел.</p>';
return result;
}
function selectItem(li) {
if( li == null ) var sValue = 'А ничего не выбрано!';
if( !!li.extra ) var sValue = li.extra[2];
else var sValue = li.selectValue;
alert("Выбрана запись с ID: " + sValue);
}
$("#example1").autocomplete("<?php echo base_url()?>welcome/autocomplete", {
delay:10,
minChars:2,
matchSubset:1,
autoFill:true,
matchContains:1,
cacheLength:10,
selectFirst:true,
formatItem:liFormat,
maxItemsToShow:10,
onItemSelect:selectItem,
extraParams: {
destinct: _CurrentFieldName}
});
})
Пример реализации брал от сюда http://www.linkexchanger.su/2008/39.html Пробовал вариант с onchange="_CurrentFieldName = this.value". Но перменная _CurrentFieldName определяется как undefined. В принципе оно и понятно почему, инициализация перменной и подстановка значения в autocomplete происходит при загрузке страницы. Подскажите, пожалуйста, как можно решить мою проблему или в какой стороне копать. |
Как то так
$(select[name="distinct"]).select(function() {
var value = this.getElementsByTagName('option')[this.selectedIndex].value // — получить значение выбранного элемента селекта
// теперь это значение, наверное, нужно заново отправить в $("#example1").autocomplete(…)
});
|
Добавил к элементу select id="distinct"
и в параметрах вставил строку extraParams: {a: "$('#distinct').val()"} Все работает, как нужно. Спасибо что откликнулись. |
Други мои! Растолкуйте и мне как получить ID из <li>.
Все по порядку... Имею инпат <input type="text" id="custSearch" value="" style="width: 200px;" /> В него autocomplete() добавляет результат запроса к БД. PHP обработчик формирует вот такой список для input
foreach ($CustomList as $val) {
echo $val['familia']." ".$val['cust_name']." ".$val['otchestvo']."|" .$val['customer_id']. "\n";
}
На клиентской стороне, в списке <li>...</li> встречаю строку вида Цитата:
Таперича мне надо получить по событию onItemSelect этот самый элемент [1] и передать его дальше, другому скрипту. Исходя из мануала, о котором упоминал be3, его можно получить подобной функцией
function selectItem(li) {
if( li == null ) var sValue = 'А ничего не выбрано!';
if( !!li.extra ) var sValue = li.extra[1];
else var sValue = li.selectValue;
alert("Выбрана запись с ID: " + sValue);
}
Но у меня она ничего не сообщает. Молчит! Что я не так делаю? На всякий случай цитирую основной код.
$(document).ready(function(){
function liFormat (row, i, num) {
var result = row[0] + '<p class=qnt>' + row[1] + ' тыс.чел.</p>';
return result;
}
function selectItem(li) {
if( li == null ) var sValue = 'А ничего не выбрано!';
if( !!li.extra ) var sValue = li.extra[1];
else var sValue = li.selectValue;
alert("Выбрана запись с ID: " + sValue);
}
$(document).ready(function() {
$("#custSearch").autocomplete(
"customers/customers_list_for_search.php",
{
delay:10,
minChars:2,
matchSubset:1,
autoFill:true,
matchContains:1,
cacheLength:10,
selectFirst:true,
formatItem:liFormat,
maxItemsToShow:10,
onItemSelect:selectItem
}
);
});
}); //end readyfunction
|
Попоробовал ваш кусок кода, все работает или я не правильно понял проблему +)
http://be3.su/test.php p.s. $(document).ready нужно писать только один раз +) |
Цитата:
Может проблема в браузере. Пробовал FF и IE7. Буду думать... |
Проблема решилась весьма просто.
Обновил файл query.autocomplete.js файлом взятым с LinkExchanger Blog. И все встало на свои места. У самых непонятных багов зачастую весьма банальные причины... |
Извините за повтор, но испытал все описанные способы, но переменную не получается передать, может подскажете в чем дело:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Тест автокомплита</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript" src="../lib/jquery.js"></script>
<script type='text/javascript' src='../jquery.autocomplete.js'></script>
<link rel="stylesheet" type="text/css" href="main.css" />
<link rel="stylesheet" type="text/css" href="jquery.autocomplete.css" />
<link rel="stylesheet" type="text/css" href="lib/thickbox.css" />
<script type="text/javascript">
$(document).ready(function() {
var CTvalue;
$("#counter_type").autocomplete('autocomplete_type.php', {
delay: 100,
minChars: 0,
max: 12,
autoFill: true,
mustMatch: true,
matchContains: false,
scrollHeight: 220
});
$("#counter_number").autocomplete('autocomplete_number.php', {
extraParams: {bar:CTvalue}
});
});
</script>
</head>
<body>
<div id="content">
<form autocomplete="off">
<table>
<tr>
<td><label>Выбирите тип ПУ</label></td>
<td><label>Выбирите No ПУ</label></td>
</tr>
<tr>
<td><input type="text" id="counter_type" onchange="CTvalue=this.value" /></td>
<td><input type="text" id="counter_number" /></td>
<td><input type="submit" value="Найти" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
Переменная bar не за какие коврижки не хочет передаваться:( |
А если var CTvalue = $('#counter_type').val(); , то наверняка сработает...:)
|
Этот способ тоже пробовал. Но может я чего не понимаю куда этот кусок вставлять?
Пробовал и функции писать, хоть это и первое мое столкновение с javascript. Смотря по алертам все работает, а как только переходишь в autocomplete_number.php, пишет undefined. Однако если передавать не переменную, то все работает. |
| Часовой пояс GMT +3, время: 18:14. |