Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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.
sem a vírgula
$("#titulo, #depoimento, #select-news").on('change keyup', function(){
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()
});Pela lógica parecia que ia funcionar tiagosabadini... a ideia foi boa, mas não funcionou.
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');
}
});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.