Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Yuri Fontella

Possibilidade de colocar dois eventos em uma função

Recommended Posts

Tenho essa função que insere, ou tira o disabled do button conforme você insere ou apaga dados nos campos... utilizo o evento keyup e tudo funciona normalmente. Porém, um dos 3 campos, é um select... e o select não funciona com o keyup, ele funciona só com o change... como posso arrumar essa função para funcionar nos dois tipos de campos... o input e o select.

      $("#titulo, #depoimento, #select-news").on('change, keyup', function(){	var titulo = $("#titulo").val();	var depoimento = $("#depoimento").val();        var select_news = $("#select-news").val();	  $(".insert").removeClass('disabled');	  if(titulo == "" || depoimento == "" || select_news == ""){            $(".insert").addClass('disabled');          }          })

Dessa maneira ali, não deu certo ('change, keyup') :(

 

 

Alguém?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, no onChange do seu select chame uma função, por exemplo:

 

 

function desativaBtn(valor) {

    if (valor == "") {
    $(".insert").addClass('disabled');
    }
}

 

 

<select id="select_news" onChange="desativaBtn(this.value)" >

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas não pode existir duas funções, assim que eu digitar nos inputs normais vai chamar a função e vai habilitar o botão mesmo eu não ter selecionado nada no select, tem que ser uma função só para os dois tipos de botão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem a vírgula

$("#titulo, #depoimento, #select-news").on('change keyup', function(){

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu pra testar, mas dá uma olhada no código abaixo:

 

var minhaFuncao = function(){
	var titulo = $("#titulo").val();
	var depoimento = $("#depoimento").val();
        var select_news = $("#select-news").val();
	  $(".insert").removeClass('disabled');
	  if(titulo == "" || depoimento == "" || select_news == ""){
            $(".insert").addClass('disabled');
          }    
}

$("#titulo, #depoimento, #select-news").on({
    change: minhaFuncao(),
    keyup: minhaFuncao()
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Yuri, tentei criar uma solução menos redundante possível (não que não tenha ficado...), pra mim funcionou. Peço que apenas adicione a mesma classe para cada input[type=text] e use o seguinte script (no caso, eu usei a classe 'input-text'):

function enableInsertButton(elem, button){
  
  var elem_values = [];
  
  for(var i = 0; i < elem.length; i++){
    
    elem_values.push(elem[i].value);
    
    if(elem_values.indexOf('') > -1){
      button.addClass('disabled');      
    } else{
      button.removeClass('disabled');
    }
  }
}

$('.input-text').on('keyup', function(){
  if($('#select-news')[0].value !== ''){
    enableInsertButton($('.input-text'), $('.insert'));
  }  
});

$('#select-news').on('change', function(){
  if(this.value !== ''){
    enableInsertButton($('.input-text'), $('.insert'));
  } else{
    $('.insert').addClass('disabled');
  }
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom rodrigomorais... funcionou perfeitamente.Na minha função, funcionava... mas tinha que dar um click a mais para o botão aparecer ¬¬

 

Valeu cara :)



William Bruno, agora que eu vi a sua resposta... funcionou também apenas tirando a vírgula. Vou usar a minha função com a sua dica, assim eu posso dizer que é "minha função" haha... Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.