Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2011, 15:37
Интересующийся
Отправить личное сообщение для boro-da Посмотреть профиль Найти все сообщения от boro-da
 
Регистрация: 29.07.2009
Сообщений: 16

Динамическое изменение параметров
Есть функция которая при загрузке страницы элементу #street присваивает функцию

<script type="text/javascript">
var a, cityid;
jQuery(function(){
cityid = $('#city').val();
a = $('#street').autocomplete({serviceUrl:global_site_address+'/generators/get_streets.php', width:148, params: { city: ''+cityid }, });
});
</script>


Элемент #city в ходе работы может получать другое значение, но на сколько я понял, вышеприведённый js срабатывает только 1 раз. Как сделать его динамичным, что бы при изменении #city менялся и запрос(код приведён выше)

Придумал велосипед с квадратными колёсами, работает, но если #city после загрузки не менять, запрос получается неправильным...

По умолчанию у #city нет значения... Точнее есть, но оно постоянно меняется, поэтому

var cityid=1;


Не вариант... Но и пользователь может не изменить значение #city...

Мой велосипед

$('#city').change(function () {
	var a, cityid;
	jQuery(function(){
	cityid = $('#city').val();
	a = $('#street').autocomplete({serviceUrl:global_site_address+'/generators/get_streets.php', width:148, params: { city: ''+cityid }, });
	});
});


Помогите сделать так, что бы и при загрузке появлялось значение #cityid и при изменении
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2011, 18:25
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Вы можете просто сделать вот так:
$('#city').change(function () {
	var a, cityid;
	jQuery(function(){
	cityid = $('#city').val();
	a = $('#street').autocomplete({serviceUrl:global_site_address+'/generators/get_streets.php', width:148, params: { city: ''+cityid }});
	});
}).change();

Последний раз редактировалось Андрей Параничев, 28.08.2011 в 22:58. Причина: Запятая в конце JSON не валидна
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2011, 19:30
Интересующийся
Отправить личное сообщение для boro-da Посмотреть профиль Найти все сообщения от boro-da
 
Регистрация: 29.07.2009
Сообщений: 16

Много прочитав за день пришёл к выводу, что если я выполняю свою функцию и меняю значение #city, к #city привязывается сразу 2 autocomplete.js с разными ключами и в результатах у меня получается полная белиберда.

Если я сначала в #city выберу 1 в #streets появятся первые результаты, если после этого я изменю значение #city у меня в #streets появятся и первые и вторые результаты и т.д.

Как мне подключить функцию с динамическим параметром

var a;
jQuery(function(){
a = $('#street').autocomplete({serviceUrl:global_site_address+'/generators/get_streets.php', width:148, params: { city: $('#city').val() }, Cache: false, });
});


a = $('#street').autocomplete({serviceUrl:global_site_ address+'/generators/get_streets.php', width:148, params: { city: $('#city').val() }, Cache: false, });
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2011, 21:34
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от boro-da Посмотреть сообщение
Элемент #city в ходе работы может получать другое значение, но на сколько я понял, вышеприведённый js срабатывает только 1 раз. Как сделать его динамичным, что бы при изменении #city менялся и запрос(код приведён выше)
запрос изменить нельзя, его можно только создать, отослать или отменить. я так понял, при запросе изменялся параметр

Сообщение от boro-da Посмотреть сообщение
Помогите сделать так, что бы и при загрузке появлялось значение #cityid и при изменении

значение #city при загрузке страницы будет "", т.е. пустая строка.

конечный вопрос : "как отослать запрос и при загрузке страницы, и при изменении поля" . Я так понял?
// назначаем обработчик на изменение поля
$('#city').change(function() {
    var a, cityid;
    jQuery(function() {
        $('#street').autocomplete({
            serviceUrl: global_site_address + '/generators/get_streets.php',
            width: 148,
            params: {
                city: $('#city').val()
            },
        });
    });
})*!*.trigger('change')*/!* // а это при загрузке.будет исполняться то, что в обработчике
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2011, 23:04
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

melky,
Ваш вариант принципиальных отличий от моего не имеет.

boro-da,
Какой именно плагин jQuery вы используете? Судя по параметрам это не jquery ui. Посмотрите, имеет ли плагин функцию снятия с элемента своих обработчиков (удаления autocomplete с формы) или какого-то другого метода установки параметров, например .autocomplete("option", ...) по аналогии с jquery ui плагином.

Говоря проще, если плагин не поддерживает "горячее" изменение параметров, то вам придется удалять его с элемента и ставить с новыми параметрами. В любом случае, пока не ясно, про какой именно плагин идет речь, помочь не получится.
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2011, 23:15
Интересующийся
Отправить личное сообщение для boro-da Посмотреть профиль Найти все сообщения от boro-da
 
Регистрация: 29.07.2009
Сообщений: 16

Сообщение от melky Посмотреть сообщение
конечный вопрос : "как отослать запрос и при загрузке страницы, и при изменении поля" . Я так понял?
Да, всё верно. Или может как-то можно отключить обработчик поля #streets при изменении #city и подключить заново, но с новыми параметрами. Я просто в php больше, с js потыркался, но у меня не получилось...

И за одно, хотел узнать ваше мнение, стоит ли ставить jquery ui autocomplete, я так понял это намного сложнее, а я в js пока только до 73-й страницы дошёл Честно признаюсь, очень хочется это сделать, а до момента когда я сам смогу это делать ещё 593 страницы Помогите пожалуйста

Последний раз редактировалось boro-da, 29.08.2011 в 01:44.
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2011, 01:06
Интересующийся
Отправить личное сообщение для boro-da Посмотреть профиль Найти все сообщения от boro-da
 
Регистрация: 29.07.2009
Сообщений: 16

решил дочитать книгу о JS, и разобраться....

Последний раз редактировалось boro-da, 29.08.2011 в 01:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое изменение фона ячейки CyMKuH Элементы интерфейса 2 11.07.2011 15:19
Listbox и динамическое изменение текста mindsurfer Элементы интерфейса 2 26.01.2009 13:37
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17
В IE не работает динамическое изменение colspan, нужна помощь! Extasy Общие вопросы Javascript 8 17.08.2008 11:55
Динамическое изменение размеров изображения Макс Элементы интерфейса 7 21.07.2008 16:55