我通过Zend Framework以下列方式使用Dojo ValidationTextBox:
$form->addElement('ValidationTextBox', 'procedureName', array(
'label' => _('Procedure Name'),
'value' => $alarm->procedureName,
'attribs' => array(
'required' => true,
'invalidMessage' => 'Required!'
)
));
同样,我的表单验证以这种方式设置:
if (formWidget.isValid()) {
return true;
} else {
alert('Invalid form.');
return false;
}
如果“procedureName”文本框为空,则表单验证将阻止表单提交,但Dojo不会将表单元素标记为无效,也不会显示“必需!”信息。实际上,只有在我之前单击它时才会标记表单元素(但仍然不会显示无效消息)。
如何从this page重建行为,您可以点击提交按钮而不点击之前的任何必填字段,Dojo会标记所有必填字段?
感谢。
答案 0 :(得分:1)
Dojo允许声明性地和程序化地使用它的许多功能。 声明性用法使用带有非标准属性的标准HTML元素,这些属性在加载页面时进行解析。可能会导致问题,因此Zend Framework默认使用程序化用法;各种视图助手将生成javascript并将其推送到dojo()视图助手,以便在呈现时包含。 要指定声明用法,只需调用静态setUseDeclarative()方法:
Zend_Dojo_View_Helper_Dojo::setUseDeclarative();
在表单初始化时。 这将允许任何非标准选项,如“required”=“true”包含在输入标记中。 然后dojox.validate函数将起作用。
我用
<script type="dojo/method" event="onSubmit">
if (this.validate()) {
//return confirm('Form is valid, press OK to submit');
} else {
//alert('Form contains invalid data. Please correct first');
return false;
}
return true;
</script>
在我的表单标签内作为我的验证设置。
答案 1 :(得分:0)
错误是我应该使用formWidget.validate(),而不是formWidget.isValid()。