2010-10-12 49 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> 

我的表單標籤內爲我的驗證的設置。