Помогите моему скрипту "найти" объект
Здравствуйте.
Привожу фрагмент скрипта.Эта функция выводит результаты поиска в виде нескольких панелек с кнопками Выбрать для каждого результата:
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, время: 12:47. |