Помогите моему скрипту "найти" объект
Здравствуйте.
Привожу фрагмент скрипта.Эта функция выводит результаты поиска в виде нескольких панелек с кнопками Выбрать для каждого результата: 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(); как нажать на первую по списку кнопочку? |
$('#customer_part').find('.setup-customer').trigger( "click" ); так пробовали? |
Цитата:
А может быть скрипт просто не успевает после ajax запроса "отрисовать" результаты и кнопки просто нет в момент её нажатия? У меня идет так searchCustomers("searchCustomersById"); $('#customer_part').find('.setup-customer').trigger( "click" ); |
тогда про complete callback function поищите примеры
|
Цитата:
|
собственно он должен быть в коде ниже создания элемента и назначения обработчика события.
|
Докладываю
Вынес программное нажатие в новую тестовую кнопку результат - и ваш и мой вариант работают, т.е. "находят" кнопку и нажимают. А про " обернуть в ready " не очень понятно, ведь если я правильно понимаю, ready у объекта наступает когда document стал ready, а не после его персональной перерисовки $('#customers').html(html); |
И вопрос: уведомления на почту об ответе только у меня приходят через раз?
|
Цитата:
|
Цитата:
|
Это я понял, я имел ввиду "поле".ready возникнет только в момент "документ".ready, а не после "поле".refresh (условно). Или я не прав?
|
Цитата:
|
Если я еще не надоел, то после длительных танцев ситуация такая:
Изначально вышеуказанная функция поиска вызывается при наборе букв в поле поиска: $('#customer_for_search').typeWatch({ captureLength: 3, highlight: true, wait: 100, callback: function(){ searchCustomers("searchCustomers"); } }); я хочу чтобы при открытии страницы уже был выбран "Вася", для этого пишу $(document).ready(function() { ... $('#customer_for_search').val('Вася'); searchCustomers("searchCustomers"); $('#customer_for_search').val(''); ... все нормально, Вася ищется и находится, но нужно еще автоматически нажать кнопку "Выбрать". Для этого в функции поиска ставлю else html = '<div class="alert alert-warning">{l s='No customers found'}</div>'; $('#customers').html(html); resetBind(); // нажатие кнопки $('#customer_part').find('.setup-customer').trigger( "click" ); и дальше самое интересное - кнопка "сама нажимается" только если я с клавиатуры набираю "вася" или "петя", а при обновлении страницы (после document.ready) не нажимается. Почему? |
Цитата:
|
Цитата:
|
это ерунда, лучше по проблеме :) :)
|
на счет только с клавиатуры, сложно точно сказать, видимо эта функция работает с событием keyup, keypress или kedown, попробовать заменить на input или change
|
Цитата:
|
т.е. typeWatch работает как надо, а вот без нее - не работает
|
я если честно запутался, если document ready мешает и все работает без него почему бы не убрать его?
|
набор с клавиатуры в "поле А" вызывает А.typeWatch, который вызывает "ajax запрос B", в конце обработки этого запроса стоит (объект).click
так работает нормально если поставить в document.ready функцию, которая вызывает этот же "ajax запрос В", то (объект).click в конце обработки не работает (то ли не срабатывает, то ли (объект) у которого этот click вызывается не виден скрипту) |
Цитата:
|
Цитата:
Извините неуча! |
ну и отлично!
|
Часовой пояс GMT +3, время: 11:49. |