2009-12-01 19 views
0

我是dojo的新手,可以真正使用以下2個字段驗證示例的一些幫助。重寫dijit驗證器功能並使用regExp屬性

在下面的例子中,指定validator屬性的dijit.form.ValidationTextBox字段似乎覆蓋了regExp的使用。 (即該字段不再遵守regExp規則)。如何讓它同時做到這一點?

<input dojoType="dijit.form.ValidationTextBox"
type="password"
name="password2"
id="password2"
maxLength="50"
trim="true"
regExp="[\w]+"
required="true"
validator="return this.value == dijit.byId('password').value"
invalidMessage="Confirmation password must match password" />

我有其中一個領域依賴於另一個值的另一個類似的例子,但我沒有語法正確。

<input dojoType="dijit.form.ValidationTextBox" type="text"
name="homePhone"
id="homePhone"
style="width:20%"
maxLength="10"
trim="true"
required="false"
regExp="[\d]{10}"
validator="return (dijit.byId('preferredContactMethod').value == "home") && (this.value != null)"
invalidMessage="Home phone required (ie. 9198887777)"
/>

回答

0

正確的; dijit.form.ValidationTextBox.prototype.validator()的默認實現是將this.value與this.regExp匹配,並檢查其他各種約束,如this.required。看看源代碼,看看它是如何完成的。如果你重寫它,你自己提供一個實現。你的實現可能會選擇委託給原型方法,並在邏輯上委託給你自己的測試結果。我想你也可以重寫isValid。

+0

那麼當field1依賴於field2時,通常如何進行驗證測試?我應該攔截onSubmit事件並在那裏提供額外的表單驗證測試嗎?或者,還有更好的方法? – Adam 2009-12-02 19:14:22

+1

是的,在表單層次上進行依賴驗證可能更有意義,而不是將各個小部件連接在一起,這只是因爲它會使用戶體驗更簡單。否則,你可能會得到一些循環邏輯,這會使填寫表格變得更加困難。您可以使用dijit.form.Form,除了檢查各個小部件的有效狀態外,還可以設置特定於窗體的驗證規則。 – peller 2009-12-03 02:01:24