Duas funções no mesmo input

24 views
Skip to first unread message

Wellington Alves

unread,
May 31, 2016, 8:54:05 AM5/31/16
to jQuery (Brasil)
Boa tarde amigos,
sou novato no Jquery e gostaria de uma ajuda de vocês.

Tenho um campo input com "type=date" que funciona no chrome e Edge. Porém IE e Firefox não. Até ati tudo bem.

Fiz o seguinte:

1- Criei o campo input
<input type="date" class="form-control" rel="data" id="datepicker" placeholder="Ex: 01/01/1990" name="data_nascimento">

2- Criei uma função para verificar se é IE e Firefox. Se for ele verifica a quantidade de números (8), tamanho da data. Senão ele exibe uma msg de erro.
    $.fn.maskData = function (e) {
       
if ($.browser.mozilla) {


           
$('input[id=datepicker]').datepicker({
               
format: 'dd/mm/yyyy',

               
weekStart: 0,
               
startDate: '0d',
               
todayHighlight: true,
               
autoClose: true
            });

           
$(this).blur(function () {

               
var data = $(this).val();
               
var id = $(this).attr('id');
               
data = data.replace(/\D/g, '');
               
var data_tamanho = data.length;
               
var msg_erro = 'Data inválida';

               
if (data_tamanho == 8) {
                   
$('.' + id).remove();
                   
$(this).css('border', '');
                   
data = data.replace(/(\d{2})(\d{2})/, "$1/$2/")
                    $(this).val(data);
               
} else {
                   
if (data_tamanho < 1) {
                       
$('.' + id).remove();
                       
$(this).css('border', '');

                   
} else {

                       
$('.' + id).remove();
                       
$(this).css('border', '1px solid #ff0000');
                       
$(this).after('<span class="' + id + ' erro btn btn-danger">' + msg_erro + '</span>');
                       
$('#' + id).focus();

                   
}
               
}

           
})
        }
}


Até ai tudo funciona normalmente.
Quando clico no campo aparece o Calendario normal. Porém se eu apagar algum digito e sair do campo o evento "blur" entra em ação validando e traz o erro. Mas depois disso o calendário não aparece mais. Posso clicar quantas vezes for que não aparece. Somente aparece no primeiro clique ao carregar a pagina.

Neste caso gostaria da ajuda para saber onde estou errando. Para que quando eu clique no campo, sempre apareça o calendário e depois passe pela validação ao deixar o campo.

Obrigado a todos. 

Wender Fernandes

unread,
Jun 2, 2016, 8:57:50 PM6/2/16
to jque...@googlegroups.com
Meu palpite é de que $('.' + id).remove(); pode estar removendo algo que não deveria

--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages