Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите моему скрипту "найти" объект (https://javascript.ru/forum/events/69623-pomogite-moemu-skriptu-najjti-obekt.html)

Огонек 06.07.2017 19:59

Помогите моему скрипту "найти" объект
 
Здравствуйте.
Привожу фрагмент скрипта.Эта функция выводит результаты поиска в виде нескольких панелек с кнопками Выбрать для каждого результата:
function searchCustomers(func_search)
	{
		$.ajax({
			type:"POST",
			url : "{$link->getAdminLink('AdminCustomers')}",
			async: true,
			dataType: "json",
			data : {
				ajax: "1",
				tab: "AdminCustomers",
				action: func_search ,
				customer_search: $('#customer').val()},
			success : function(res)
			{
				if(res.found)
				{
					var html = '';
					$.each(res.customers, function() {
						html += '<div class="customerCard col-lg-4">';
						html += '<div class="panel">';
						html += '<div class="panel-heading">'+this.firstname+' '+this.lastname;
						html += '<span class="pull-right">#'+this.id_customer+'</span></div>';
						html += '<span>'+this.email+'</span><br/>';
						html += '<span class="text-muted">'+((this.birthday != '0000-00-00') ? this.birthday : '')+'</span><br/>';
						html += '<div class="panel-footer">';
						html += '<a href="{$link->getAdminLink('AdminCustomers')}&id_customer='+this.id_customer+'&viewcustomer&liteDisplaying=1" class="btn btn-default fancybox"><i class="icon-search"></i> {l s='Details'}</a>';
						html += '<button type="button" data-customer="'+this.id_customer+'" class="setup-customer btn btn-default pull-right"><i class="icon-arrow-right"></i> {l s='Choose'}</button>';
						html += '</div>';
						html += '</div>';
						html += '</div>';
					});
				}
				else
					html = '<div class="alert alert-warning">{l s='No customers found'}</div>';
				$('#customers').html(html);
				resetBind();
			}
		});
	}

а также скрипт по нажатию на любую из кнопочек из строки №27
$('#customer_part').on('click','button.setup-customer',function(e){
			e.preventDefault();
			chooseCustomer($(this));
		});


Хочу добавить программное нажатие первой из этих кнопочек при открытии формы.
Испробовал с десяток вариантов, все приводить не буду, только последний из них (все равно все не рабочие :) )
$('#customer_part').find('setup-customer').click();

как нажать на первую по списку кнопочку?

j0hnik 06.07.2017 21:11

$('#customer_part').find('.setup-customer').trigger( "click" );


так пробовали?

Огонек 06.07.2017 21:37

Цитата:

Сообщение от j0hnik
$('#customer_part').find('.setup-customer').trigger( "click" );

Попробовал - не помогает.
А может быть скрипт просто не успевает после ajax запроса "отрисовать" результаты и кнопки просто нет в момент её нажатия?
У меня идет так
searchCustomers("searchCustomersById");
$('#customer_part').find('.setup-customer').trigger( "click" );

j0hnik 06.07.2017 22:03

тогда про complete callback function поищите примеры

Огонек 06.07.2017 22:22

Цитата:

Сообщение от j0hnik
тогда про complete callback function поищите примеры

А почему бы просто не разместить нажатие кнопки после строки 36? (хотя и там не работает. правда не проверял весь свой десяток вариантов)

j0hnik 06.07.2017 22:43

собственно он должен быть в коде ниже создания элемента и назначения обработчика события.

Огонек 06.07.2017 22:58

Докладываю
Вынес программное нажатие в новую тестовую кнопку
результат - и ваш и мой вариант работают, т.е. "находят" кнопку и нажимают.
А про " обернуть в ready " не очень понятно, ведь если я правильно понимаю, ready у объекта наступает когда document стал ready, а не после его персональной перерисовки
$('#customers').html(html);

Огонек 06.07.2017 22:59

И вопрос: уведомления на почту об ответе только у меня приходят через раз?

j0hnik 06.07.2017 23:00

Цитата:

Сообщение от Огонек (Сообщение 457850)
Докладываю
Вынес программное нажатие в новую тестовую кнопку
результат - и ваш и мой вариант работают, т.е. "находят" кнопку и нажимают.
А про " обернуть в ready " не очень понятно, ведь если я правильно понимаю, ready у объекта наступает когда document стал ready, а не после его персональной перерисовки
$('#customers').html(html);

ну не документ а элемент $('#customer_part') в данном случае

j0hnik 06.07.2017 23:03

Цитата:

Сообщение от Огонек (Сообщение 457851)
И вопрос: уведомления на почту об ответе только у меня приходят через раз?

не могу точно сказать в чем причина, почта на том же домене? в папке спам гляньте.


Часовой пояс GMT +3, время: 06:25.