javascript
  • dojo
  • 2008-08-19 74 views 3 likes 
    3

    在我的例子在下面,我用dijit.form.DateTextBox無論如何,禁用客戶端驗證的dojo日期文本框?

    <input type="text" name="startDate" dojoType="dijit.form.DateTextBox" constraints="{datePattern:'MM/dd/yyyy'}" value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' /> 
    

    因此,舉例來說,如果用戶開始輸入「ASDF」到日期字段變成黃色,出現一個彈出錯誤信息說The value entered is not valid.。即使我刪除了constraints="{datePattern:'MM/dd/yyyy'}",它仍然有效。

    沒有詳細說明爲什麼,我希望能夠保持dojoType,並仍然在特定情況下防止驗證。

    回答

    6

    嘗試覆蓋標記中的validate方法。

    這會工作的(測試):

    <input type="text" name="startDate" dojoType="dijit.form.DateTextBox" 
        constraints="{datePattern:'MM/dd/yyyy'}" 
        value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' 
        validate='return true;' 
    /> 
    
    +0

    爲什麼在菩薩的名字是不是'約束=「{} datePattern」`在任何道場文檔或API的任何地方提到?謝謝sooooo爲此。這一直在困擾着我一段時間。 *歡樂的眼淚* – peirix 2010-03-05 15:00:30

    1

    我唯一的建議是以編程方式刪除服務器端或客戶端的dojoType。不可能保留dojoType並且不驗證它。除非你創建自己的類型,它有你的邏輯。

    1

    我也有類似的問題,其中個ValidationTextBox滿足我所有的需求,但禁用驗證程序,直到之後,用戶必須首先按下提交這是必要的。

    我的解決辦法是用一對夫婦的新方法克隆此爲ValidationConditionalTextBox:

    enableValidator:function() { 
         this.validatorOn = true; 
        }, 
    
        disableValidator: function() { 
         this.validatorOn = false; 
        }, 
    

    然後 - 在驗證:函數()我添加了一個檢查:

     if (this.validatorOn) 
         { ... } 
    

    相當直截了當,我validatorOn的默認值是false(這出現在JavaScript的頂部)。當我的表單提交時,只需調用enableValidator()。你可以在這裏查看完整的JavaScript:

    http://lilawnsprinklers.com/js/dijit/form/ValidationTextBox.js

    相關問題