Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2009, 12:49
be3 be3 вне форума
Новичок на форуме
Отправить личное сообщение для be3 Посмотреть профиль Найти все сообщения от be3
 
Регистрация: 19.01.2009
Сообщений: 3

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 происходит при загрузке страницы.

Подскажите, пожалуйста, как можно решить мою проблему или в какой стороне копать.
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2009, 16:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Как то так
$(select[name="distinct"]).select(function() {
   var value = this.getElementsByTagName('option')[this.selectedIndex].value // — получить значение выбранного элемента селекта
   // теперь это значение, наверное, нужно заново отправить в $("#example1").autocomplete(…)
});
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2009, 12:16
be3 be3 вне форума
Новичок на форуме
Отправить личное сообщение для be3 Посмотреть профиль Найти все сообщения от be3
 
Регистрация: 19.01.2009
Сообщений: 3

Добавил к элементу select id="distinct"
и в параметрах вставил строку
extraParams: {a: "$('#distinct').val()"}

Все работает, как нужно. Спасибо что откликнулись.
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2009, 22:26
Аватар для EGORR
Интересующийся
Отправить личное сообщение для EGORR Посмотреть профиль Найти все сообщения от EGORR
 
Регистрация: 11.04.2009
Сообщений: 21

Други мои! Растолкуйте и мне как получить 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> встречаю строку вида
Цитата:
Агапов Василий Михайлович|386
Все ясно: элемент [0] - ФИО, элемент [1] - айди записи.
Таперича мне надо получить по событию 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
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2009, 06:46
be3 be3 вне форума
Новичок на форуме
Отправить личное сообщение для be3 Посмотреть профиль Найти все сообщения от be3
 
Регистрация: 19.01.2009
Сообщений: 3

Попоробовал ваш кусок кода, все работает или я не правильно понял проблему +)
http://be3.su/test.php

p.s. $(document).ready нужно писать только один раз +)

Последний раз редактировалось be3, 12.04.2009 в 06:52.
Ответить с цитированием
  #6 (permalink)  
Старый 12.04.2009, 08:25
Аватар для EGORR
Интересующийся
Отправить личное сообщение для EGORR Посмотреть профиль Найти все сообщения от EGORR
 
Регистрация: 11.04.2009
Сообщений: 21

Цитата:
Попоробовал ваш кусок кода, все работает...
Странно...
Может проблема в браузере. Пробовал FF и IE7.
Буду думать...
Ответить с цитированием
  #7 (permalink)  
Старый 12.04.2009, 13:14
Аватар для EGORR
Интересующийся
Отправить личное сообщение для EGORR Посмотреть профиль Найти все сообщения от EGORR
 
Регистрация: 11.04.2009
Сообщений: 21

Проблема решилась весьма просто.
Обновил файл query.autocomplete.js файлом взятым с LinkExchanger Blog.
И все встало на свои места.
У самых непонятных багов зачастую весьма банальные причины...
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2009, 08:27
IMasikI
 
Сообщений: n/a

Извините за повтор, но испытал все описанные способы, но переменную не получается передать, может подскажете в чем дело:
<!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 не за какие коврижки не хочет передаваться
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2009, 08:54
Аватар для EGORR
Интересующийся
Отправить личное сообщение для EGORR Посмотреть профиль Найти все сообщения от EGORR
 
Регистрация: 11.04.2009
Сообщений: 21

А если var CTvalue = $('#counter_type').val(); , то наверняка сработает...

Последний раз редактировалось EGORR, 11.06.2009 в 08:57.
Ответить с цитированием
  #10 (permalink)  
Старый 11.06.2009, 13:44
IMasikI
 
Сообщений: n/a

Этот способ тоже пробовал. Но может я чего не понимаю куда этот кусок вставлять?
Пробовал и функции писать, хоть это и первое мое столкновение с javascript. Смотря по алертам все работает, а как только переходишь в autocomplete_number.php, пишет undefined. Однако если передавать не переменную, то все работает.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
плагин autocomplete от jquery Anthony jQuery 0 14.12.2008 22:48