首先,我使用的东西:
我正在使用 Dojo 1.6 和 Zend Framework 1.11.5 - 不,我现在不会更新。
其次,我的情况:
我有一个启用 Zend_Dojo 支持的 Zend_Form。我正在我的动作控制器中创建公式并将其提供给完美呈现的视图。公式调用一个 javascript 函数,该函数将变量放入一个 URL 中,该 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 之类的东西连接到公式?监听事件并防止默认操作。而是调用我的 findDevice() js 函数。
我不能自己听击键,因为几乎精确的公式又在它旁边,它应该为自己工作。
我喜欢这样的东西:向公式属性数组添加一个属性namend“onSubmit”,该数组链接到js函数findDevice()。
对不起我的英语不好:(
非常感谢!
-菲利普