Existe alguma maneira de desabilitar a validação do lado do cliente para a caixa de texto de data do dojo?
-
08-06-2019 - |
Pergunta
No meu exemplo abaixo estou usando um dijit.form.DateTextBox
:
<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" constraints="{datePattern:'MM/dd/yyyy'}" value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' />
Por exemplo, se o usuário começar a inserir "asdf" na data, o campo ficará amarelo e uma mensagem de erro pop-up aparecerá dizendo The value entered is not valid.
.Mesmo se eu remover o constraints="{datePattern:'MM/dd/yyyy'}"
ainda valida.
Sem entrar em detalhes sobre o motivo, gostaria de poder manter o dojoType e ainda evitar a validação em circunstâncias específicas.
Solução
Tente substituir o método de validação na sua marcação.
Isso funcionará (apenas testado):
<input type="text" name="startDate" dojoType="dijit.form.DateTextBox"
constraints="{datePattern:'MM/dd/yyyy'}"
value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>'
validate='return true;'
/>
Outras dicas
Minha única sugestão é remover programaticamente o dojoType no lado do servidor ou no lado do cliente.Não é possível manter o dojoType e não validá-lo.A menos que você crie seu próprio tipo que contenha lógica.
Tive um problema semelhante, onde o ValidationTextBox atendia todas as minhas necessidades, mas era necessário desabilitar as rotinas de validação até que o usuário tivesse pressionado Enviar pela primeira vez.
Minha solução foi clonar isso em um ValidationConditionalTextBox com alguns novos métodos:
enableValidator:function() {
this.validatorOn = true;
},
disableValidator: function() {
this.validatorOn = false;
},
Então - no validator:function() adicionei uma única verificação:
if (this.validatorOn)
{ ... }
Bastante simples, meu valor padrão para validatorOn é falso (isso aparece logo no topo do javascript).Quando meu formulário for enviado, basta chamar enableValidator().Você pode ver o JavaScript completo aqui:
http://lilawnsprinklers.com/js/dijit/form/ValidationTextBox.js