4

以下の私の例では、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を保持し、特定の状況での検証を防止できるようにしたいと思います。

4

3 に答える 3

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;'
/>
于 2008-08-19T04:13:01.923 に答える
1

私の唯一の提案は、サーバー側またはクライアント側でdojoTypeをプログラムで削除することです。dojoTypeを保持して、検証しないようにすることはできません。ロジックを含む独自のタイプを作成しない限り。

于 2008-08-19T02:02:30.377 に答える
1

同様の問題がありました。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

于 2008-09-12T18:55:06.177 に答える