Pergunta

Eu estou usando o jQuery Validation plugin de e eu tenho uma caixa de texto com o classe digits para forçá-lo a ser apenas dígitos, mas não é obrigatório. Quando eu chamar validar no formulário, funciona bem, mas se eu chamar valid() na caixa de texto quando ele está vazio, ele retorna 0, apesar de nenhuma demonstração mensagem de erro e necessário não estar definido.

Alguém sabe por que ele estaria retornando isso por um valor de entrada aparentemente válido?

Aqui está o código:

<input type="text" value="" name="kiloMetresTravelled" id="kiloMetresTravelled" class="digits"/>

eo script

<script type="text/javascript'>
 var isvalid = jQuery('#kiloMetresTravelled').valid(); 
 //isvalid == 0 when kiloMetresTravelled is blank
</script>
Foi útil?

Solução

Verifique isso, a partir do documentação :

Faz "campo" necessária e dígitos somente.

Você poderia fazer algo parecido com isto:

var isValid = jQuery('#kiloMetresTravelled').valid() || jQuery('#kiloMetresTravelled').val() == "";

Outras dicas

Eu acho que isso funciona:

var e="#whatever";
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required');

Há um bug na biblioteca quando os métodos de regra verificar se há campos opcionais com "this.optional (elemento)". Quando o campo é retornos this.optional vazias "dependência-incompatibilidade" e o método de validação retorna "indefinido" marcando o campo como inválido.

explicação completa aqui:

https://github.com/jzaefferer/jquery-validation/issues/481

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top