代码之家  ›  专栏  ›  技术社区  ›  Ariod

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

  •  0
  • Ariod  · 技术社区  · 14 年前

    我正在通过Zend框架使用Dojo验证文本框,方法如下:

    $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不会将表单元素标记为无效,也不会显示“Required!”消息。实际上,只有我以前单击表单元素时,它才会标记表单元素(但仍然不会显示无效消息)。

    我怎样才能从 this page ,在这里,您可以单击提交按钮而不必以前单击任何必需的字段,Dojo将标记所有必需的字段?

    谢谢。

    2 回复  |  直到 10 年前
        1
  •  1
  •   altergothen    10 年前

    Dojo允许声明性和编程性地使用它的许多特性。 声明性用法使用带有非标准属性的标准HTML元素,这些属性在加载页面时被解析。可能会导致问题,因此Zend框架默认使用编程用法;各种视图帮助程序将生成JavaScript,并将其推送到dojo()视图帮助程序,以便在呈现时包含。 要指定声明性用法,只需调用static 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
  •  0
  •   Ariod    14 年前

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