Стояла задача добавить ajax событие на элемент формы созданный не Друпалом. В моем случае это оказался "Path" от элемента SVG, созданного библиотекой Raphael. Т.е. кусочек интерактивной карты.
Решение:
1. Создаем элемент на форме, который будет выполнять функции ajax элемента:
<?php
$form['tid'] = array(
'#type' => 'textfield',
'#default_value' => '',
'#ajax' => array (
'callback' => 'mapsearch_cities',
'wrapper' => 'cities',
'event' => 'hs_changed',
),
);
?>
2. В JS коде генерации неДрупал элемента(карты Raphael), присваиваем этому элементу событие mousedown, это можно сделать как минимум 5 способами, смотрите документацию jquery или в моем случае библиотеки Raphael.
В этом событии нам нужно сделать 2 вещи:
- $('#edit-tid').val(paths[arr[this.id]].tid);
//Изменить значение у элемента
- $('#edit-tid').trigger('hs_changed');
//Запустить выполнение ajax события
3. Обрабатываем callback как и у других ajax элементов.
Просто и элегантно. Другие подобные варианты реализации этого описанные в рунете сводились к переписыванию в свой JS половины друпаловского misc/ajax.js, да и к тому же генерацию кучи дополнительных параметров в POST запрос.
Если есть другие решения, делитесь, не жмоттесь )