Zend_Dojo和ValidationTextBox - 并不总是出现无效消息

时间:2010-10-12 17:58:01

标签: zend-framework dojo

我通过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会标记所有必填字段?

感谢。

2 个答案:

答案 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()。