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. Однако если передавать не переменную, то все работает. |
А почему ты при вызове autocomplete для "#counter_number" не передаешь функции никаких параметров?
Попробуй забирать значение из counter_type с помощью live
$("input[@type=submit]").live("click", function(){
$('#counter_type').val()
});
|
У меня версия 1.1.
Не у кого не возникало проблем в Opere с этой библиотекой? Я пробовал напечатать символ "(" А он не хочет. Точно также проблема на сайте плагина: http://docs.jquery.com/Plugins/Autocomplete Кто-нить с таким сталкивался? И как реши проблему? |
Использую данные из таблицы для заполнения поля автокомплитом.
Все работает, но надо, что помимо поля p_field, заполняется значением name из таблицы, заполнялось еще и поле p_field_cod кодом cod выбранного name. Кто-нибудь знает, как это можно реализовать?
htp.p('<script type="text/javascript">
$().ready(function() {
$("#p_field").autocomplete([');
for i in ( select NAME,cod from table_1
order by name )
loop
htp.p('"'||replace(replace(replace(trim(i.name),'"',''''),chr(10),''),chr(13),'')||'",');
end loop;
htp.p('""
], {
width: 478,
multipleSeparator: " ",
scroll: true,
maxItemsToShow: 10
});
});
</script>');
htp.p('<INPUT TYPE="text" NAME="p_field" value="'||v_name||'" id="p_field">');
htp.p('<input type="hidden" name="p_field_cod" id="p_field_cod" />')
|
| Часовой пояс GMT +3, время: 23:02. |