2010-10-12 37 views
0

我使用道场个ValidationTextBox通过Zend框架通过以下方式:Zend_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

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

1

Dojo允许声明性和程序化使用其许多功能。 声明性用法使用标准HTML元素和加载页面时解析的非标准属性。可能会导致问题,因此Zend Framework默认使用编程用法;各种视图助手将生成JavaScript并将其推送到dojo()视图助手以供在呈现时包含。在表单初始化

Zend_Dojo_View_Helper_Dojo::setUseDeclarative(); 

当: 要指定声明使用,只需调用静态方法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> 

我的表单标签内为我的验证的设置。

相关问题