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, время: 21:46. |