Dojo の日付テキスト ボックスのクライアント側の検証を無効にする方法はありますか?
-
08-06-2019 - |
質問
以下の例では、 dijit.form.DateTextBox
:
<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 を保持しながら、特定の状況では検証を防止できるようにしたいと考えています。
解決
マークアップ内の 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;'
/>
他のヒント
私の唯一の提案は、サーバー側またはクライアント側でプログラムによって dojoType を削除することです。dojoType を保持したまま検証しないことはできません。ロジックを組み込んだ独自の型を作成しない限り。
私も同様の問題を抱えていました。ValidationTextBox は私のニーズをすべて満たしていましたが、ユーザーが最初に [送信] を押すまで検証ルーチンを無効にする必要がありました。
私の解決策は、いくつかの新しいメソッドを使用して、これを ValidationConditionalTextBox に複製することでした。
enableValidator:function() {
this.validatorOn = true;
},
disableValidator: function() {
this.validatorOn = false;
},
次に -- validator:function() に 1 つのチェックを追加しました。
if (this.validatorOn)
{ ... }
非常に簡単に言うと、validatorOn のデフォルト値は false です (これは JavaScript の先頭に表示されます)。フォームを送信するときは、enableValidator() を呼び出すだけです。ここで完全な JavaScript を表示できます。
http://lilawnsprinklers.com/js/dijit/form/ValidationTextBox.js