【问题标题】:Zend_Dojo and ValidationTextBox - invalid message does not always appearZend_Dojo 和 ValidationTextBox - 无效消息并不总是出现
【发布时间】:2010-10-12 17:58:01
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: zend-framework dojo


    【解决方案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>
    

    在我的表单标签中作为我的验证设置。

    【讨论】:

      【解决方案2】:

      错误是我应该使用 formWidget.validate(),而不是 formWidget.isValid()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-20
        相关资源
        最近更新 更多