Во-первых, что я использую:
я использую Dojo 1.6 и Zend Framework 1.11.5 - и нет, я не буду обновляться сейчас.
Во-вторых, моя ситуация:
у меня есть Zend_Form с включенной поддержкой Zend_Dojo. Я создаю формулу в своем контроллере действий и передаю ее представлению, которое отлично отображается. Формула вызывает функцию javascript, которая помещает переменные в URL-адрес, который используется для обновления панели содержимого.
В-третьих, моя проблема:
Формула не отправляется при нажатии [ENTER], только при нажатии кнопки.
В-четвертых, мой код:
Комментарии не включены, код стал проще и приятнее для чтения. Некоторые части отсутствуют.
Вот часть моей Zend_Form/_Dojo:
/application/forms/CommunityDeviceFinderForm.php
class CommunityDeviceFinderForm extends Zend_Form {
public function init(){
Zend_Dojo::enableForm($this);
$this->setMethod('post');
$this->setAttribs(array(
'name' => 'findDeviceForm'
));
}
public function createElements(){
// some $this->addElement here
$this->addElement(
'Button',
'submitDeviceSearch',
array(
'label' => tr_('Search'),
'required' => false,
'ignore' => true,
'onClick' => 'findDevice()' // the called javascript function
)
);
Я оставляю свой контроллер. В любом случае это просто создание формулы и предоставление ее представлению (как «$deviceSearchForm»).
Сценарий моего просмотра. Также сильно сокращено:
/application/modules/default/views/scripts/default/de/community/device-finder.phtml
<script>
function findDevice(){
var formular = dijit.byId('<?=$this->deviceSearchForm->getAttrib('name')?>');
if(formular.isValid()){
// collecting form vars and creating an URL
// then refreshing a content pane with the created URL
} else {
// error shown
}
}
</script>
<!-- some html -->
<?=$this->deviceSearchForm?>
<!-- some more html -->
Я предполагаю - или знаю - проблема в том, что "Кнопка" не "ОтправитьКнопку". Но я не хочу обновлять страницу. Как подключить что-то вроде onSubmit к формуле? Прослушивание события и предотвращение действий по умолчанию. Вместо вызова моей js-функции findDevice().
Я не могу слушать сам ход клавиш, потому что рядом опять почти точная формула, которая будет работать на своих.
Мне бы хотелось что-то вроде: Добавление имени атрибута «onSubmit» в массив формульных атрибутов, который ссылается на js-функцию findDevice().
И извините за мой плохой английский :(
Большое спасибо!
-Филипп