2010-09-26 74 views
4

我所追求的是一種表單,它在提交時運行驗證檢查,並突出顯示所有無效字段並添加工具提示。如何在dijit.form.Form上突出顯示所有無效的dijit.form.ValidationTextBoxes?

我有效地尋找這樣的事情:

dojo.forEach(dijit.byId('myForm')._invalidWidgets, function (thisWidget,index,array) { 
    thisWidget.displayMessage("normal invalid/empty message should go here, seems I should be calling something higher level than this"); 
}); 

但我不希望被挖掘深,所有我想要做的是觸發同樣的事情這些語句觸發你的時候標籤在空的必填字段(感嘆號圖標和適當的無效/空信息)之外。也許我應該試着去解決這個標籤事件?

有人能指出我正確的方向嗎?

回答

9

是的,您是正確的 - 您可以通過調用dijit.form.Form元素上的validate()函數來獲得所有驗證,突出顯示,甚至專注於第一個無效字段。

下面是其中的validate()調用添加到onSubmit事件爲例:

<head> 
    <script type="text/javascript"> 
     dojo.require("dojo.parser"); 
     dojo.require("dojo.form.Form"); 
     dojo.require("dojo.form.ValidationTextBox"); 
     dojo.require("dojo.form.Button"); 
     // more includes here... 
    </script> 
</head> 
<body> 
    <form dojoType="dijit.form.Form" action="..." method="..."> 
     <input dojoType="dijit.form.ValidationTextBox" trim="true" regExp="..." invalidMessage="Oops..."> 
     <!-- // more form elemts here... --> 
     <button type="submit" dojoType="dijit.form.Button" ...> 
      Submit 
     </button> 
     <script type="dojo/method" event="onSubmit"> 
      if (!this.validate()) { 
       alert("Form contains invalid data. Please correct...."); 
       return false; 
      } 
      return true; 
     <script> 
    </form> 
</body> 

希望,你會發現它有幫助。

乾杯。


後續: 下面是一個可以用來幫助提示用戶爲預計什麼樣的數據的輸入字段的示例,並在驗證失敗時會提醒他們:

<input type="text" id="EXT" name="EXT" value="" 
    maxLength="10" 
    dojoType="dijit.form.ValidationTextBox" 
    regExp="\d+?" 
    trim="true" 
    promptMessage="<p class='help'>Please your extension. (i.e. "1234")</p>" 
    invalidMessage="<p class='help'>The extension field should contain only numbers.</p>"> 

這是一個聲明式示例。 (我在下面的初始響應中拼錯了它。)

+0

如何輕鬆分辨哪些表單元素無效,以便我可以告訴用戶他們必須修復哪些內容? – Jords 2010-10-01 02:36:54

+2

@Jords這種類型的實現會自動突出顯示所有無效字段,甚至將焦點設置爲第一個不正確的字段。例如,如果您有電話擴展字段,則可以使用regExp =「\ d +?」 ValidationTextBox中的屬性,以及一個invalidMessage =「擴展字段應該只包含數字。」屬性會在錯誤情況下顯示。因此,基本上,您可以裝飾性地定義驗證條件以及用戶消息和/或提示消息。 – 2010-10-01 02:54:01

+1

@Jords我在上面的答案中添加了一個示例。請注意,您可以在「提示」和「無效」消息中使用HTML標記,以使事物看起來不錯。希望有所幫助。 – 2010-10-01 03:06:42

3

jthomas_在irdo.freenode.net上的#dojo回答了我的問題。事實證明,我想要使用dijit.byId('myForm').validate(),它可以完成我想要的所有功能。謝謝,jthomas_!

相關問題