Уважаемые форумчане, есть вопрос. Написал аякс-функцию, которая отрабатывает по нажатию на кнопку. На этой же странице есть динамический выбор из двух таксономий, при выборе одной, отсеиваются нужные термины другой (тоже на аякс).
Если несколько раз нажать на кнопку, а потом выбрать термин из первого словаря, то аякс отрабатывает столько раз, сколько нажал на кнопку до этого. И выбор во второй селектор больше не отрабатывает. Кто скрипта кнопки привожу:
<?php
function zakinsert_form_alter(&$form, $form_state, $form_id){
if ((strpos($form_id,'_node_form') !== false)) {
$form['field_zakluchenie']['#prefix'] = '<div id="zakluchenie">';
$form['field_zakluchenie']['#suffix'] = '</div>';
$form['field_zakluchenie']['avto'] = array(
'#type' => 'button',
'#executes_submit_callback' => FALSE,
'#limit_validation_errors' => array(),
'#value' => t('Автоматически'),
'#ajax' => array(
'callback' => 'zakinsert_term_callback',
'wrapper' => 'zakluchenie',
'method' => 'replace',
'effect' => 'fade',
),
);
}
}
function
zakinsert_term_callback($form, $form_state) {
$res='';
$query = db_select('field_data_field_diag2', 'f');
$query->join('field_data_field_zk', 'n', 'f.entity_id = n.entity_id');
$query->fields('n', array('field_zk_value'))
->condition('field_diag2_target_id', $form_state['values']['field_diag2']['und'], '=') ;
$result = $query->execute();
while ($record = $result->fetchAssoc()) {
$res = $record['field_zk_value'];
}
$form['field_zakluchenie']['und'][0]['value']['#value'] = $res;
return
$form['field_zakluchenie'];
}
?>
Косяк явно в нем, так как когда нажимаю на кнопку, крутится значек отработки аякса, но страница все равно перезагружается. Где я накосячил?
Комментарии
Добавлю, что этим я добавляю дополнительную кнопку в форму редактирования материала, чтобы автозаполнять одно из полей. Не в этом ли косяк, что в форме 2 кнопки сабмита, хотя у этой я вроде бы сабмит отключил.
Попробую перефразировать свою проблему, может кто-то сможет подсказать. Есть форма добавления/редактирования материала. В нее, у одного из полей ввода (textarea) нужно добавить кнопку (ссылку, не важно что), по нажатию на которую это поле должно автоматически заполниться, без перезагрузки страницы. Заранее спасибо за любые полезные комментарии.
Все уже перепробовал, не знаю в чем дело. Страница такое ощущение не перезагружается, просто значок на вкладке браузера крутится и скрип отрабатывает. Не понятно, почему если вызвать повторно на этой странице динамический селект (реализован с помощью DDF), то он отрабатывает уже дважды. Еще клик на моей кнопке, и он отрабатывает трижды и уже не корректно, т.е. в подчиненное поле данные уже не попадают.
Неужели никто не сталкивался?
Похоже я тут сам с собой говорю. Попробовал этот скрипт на форме, в которой не используется DDF, все отработало как надо. Значит какой-то конфликт именно с этим модулем. Теперь бы найти какой))
Да тут аякс надо знать...Я к сожалению пока не знаю
Консоль JS в браузере что говорит?