
28.08.2011, 15:37
|
Интересующийся
|
|
Регистрация: 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 и при изменении
|
|

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 не валидна
|
|

28.08.2011, 19:30
|
Интересующийся
|
|
Регистрация: 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, });
|
|

28.08.2011, 21:34
|
sinistral
|
|
Регистрация: 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')*/!* // а это при загрузке.будет исполняться то, что в обработчике
|
|

28.08.2011, 23:04
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
melky,
Ваш вариант принципиальных отличий от моего не имеет.
boro-da,
Какой именно плагин jQuery вы используете? Судя по параметрам это не jquery ui. Посмотрите, имеет ли плагин функцию снятия с элемента своих обработчиков (удаления autocomplete с формы) или какого-то другого метода установки параметров, например .autocomplete("option", ...) по аналогии с jquery ui плагином.
Говоря проще, если плагин не поддерживает "горячее" изменение параметров, то вам придется удалять его с элемента и ставить с новыми параметрами. В любом случае, пока не ясно, про какой именно плагин идет речь, помочь не получится.
|
|

28.08.2011, 23:15
|
Интересующийся
|
|
Регистрация: 29.07.2009
Сообщений: 16
|
|
Сообщение от melky
|
конечный вопрос : "как отослать запрос и при загрузке страницы, и при изменении поля" . Я так понял?
|
Да, всё верно. Или может как-то можно отключить обработчик поля #streets при изменении #city и подключить заново, но с новыми параметрами. Я просто в php больше, с js потыркался, но у меня не получилось...
И за одно, хотел узнать ваше мнение, стоит ли ставить jquery ui autocomplete, я так понял это намного сложнее, а я в js пока только до 73-й страницы дошёл  Честно признаюсь, очень хочется это сделать, а до момента когда я сам смогу это делать ещё 593 страницы  Помогите пожалуйста
Последний раз редактировалось boro-da, 29.08.2011 в 01:44.
|
|

29.08.2011, 01:06
|
Интересующийся
|
|
Регистрация: 29.07.2009
Сообщений: 16
|
|
решил дочитать книгу о JS, и разобраться....
Последний раз редактировалось boro-da, 29.08.2011 в 01:43.
|
|
|
|