Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2012, 23:09
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

Как отследить события с динамического контента?
Имеем автокомплит по названию предприятия

Код:
    $("#firms").autocomplete({
        source: "ajax_firms.cgi",
        select: function (event, ui) {
            $.ajax({
                type: "GET",
                url: "ajax_staff.cgi",
                data: "firms=" + (ui.item.id),
                success: function (html) {
                    $("#value").html(html);
                }
            });
        }
    });
При успешном выборе нами генерируется динамическая форма с именами сотрудников

Код:
    <select name="person" id="person">
        <option value="1">person1</option>
        <option value="2">person2</option>
    </select>
Как отследить событие при смене сотрудника? Пробовал .change, но оно динамические ловить не хочет.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2012, 23:11
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

<select name="person" id="person" onchange="alert('я поменялся');">
        <option value="1">person1</option>
        <option value="2">person2</option>
    </select>
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2012, 23:26
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

я же jQuery хочу ловить, для дальнейшей обработки через аякс
пробовал так, не получается
Код:
    $("select").change(function () {
        var str = "";
        $("select option:selected").each(function () {
            str += $(this).text() + " ";
        });
        $("div").text(str);
    })
    .trigger('change');
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2012, 23:32
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

События нужно вешать после того как селект будет добавлен в dom. Или можно повесить событие 1 раз через jquery.live
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2012, 23:58
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

извините, мне не совсем понятны ваши слова, можно получить пример кода?
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2012, 00:17
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

к чему это было? и вроде бы уважаемый человек на форуме...
если посмотреть то что я написал в начале поста, то там можно увидеть что с автокомплитом проблем нету.
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2012, 01:03
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

о! спасибо за расширенный ответ.
вроде начал соображать, ушел читать.
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2012, 02:07
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

пока сделал вот так, прошу проверить меня.

1. сначала мы ищем фирму, включается автокомплит

2. после удачного поиска, вызывается select, который выводит список сотрудников.
на странице у нас уже жестко прописана форма <select name="person" id="person"></select>, а от сервера соответственно получаем только
<option></option>
<option value="1">person1</option>
<option value="2">person2</option>

3. по умолчанию у нас пусто в <select>, а соответственно и выводить ничего не надо. а вот при выборе срабатывает .change(), которая отдает данные скрипту, для того что б он вытащил с базы более полную инфу о персоне.

Код:
	$("#firms").autocomplete({
		source: "ajax_firms.cgi",
		select: function(event, ui){
			$.ajax({
				type: "GET",
				url: "ajax_staff.cgi?firms="+(ui.item.id),
				success: function(html){
					$("#person").html(html);
				}
			});
		}
	});

	$("#person").change(function(){
		$.ajax({
			type: "GET",
			url: "ajax_person.cgi?person=" + $("#person").val(),
			success: function(html){
				$("#person_add").val(html);
			}
		});
	});
рабочий пример можно посмотреть тут
http://www.ahost.com.ua/crm/index2.html
Ответить с цитированием
  #9 (permalink)  
Старый 11.03.2012, 05:14
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

лишний "мусор" на странице в виде пустых селектов.

в случае с динамикой стоит всегда использовать ".live"
__________________
С моих слов записано верно.
Ответить с цитированием
  #10 (permalink)  
Старый 11.03.2012, 20:13
Аспирант
Отправить личное сообщение для yarnik Посмотреть профиль Найти все сообщения от yarnik
 
Регистрация: 19.11.2011
Сообщений: 34

хорошо, а можно ли как то после генерирования списка $("#person").html(html);
узнать кто выбран как текущий и запустить $("#person").change(function(){
ну или ".live" если я переделаю динамический select
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47