Dojo の日付テキスト ボックスのクライアント側の検証を無効にする方法はありますか?

StackOverflow https://stackoverflow.com/questions/15514

  •  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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top