Ir para conteúdo

POWERED BY:

Arquivado

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

rikaschmitt

Botão de mais e de menos não funciona se alterado o input

Recommended Posts

Opa galera.

Tenho um input que é preenchido com uma nota (0,0) e que vai até 10. Ao lado desse input tem dois botões, um para aumentar a nota em 0.1 e o outro para diminuir a nota em 0.1. O problema é que quando eu altero o valor da nota manualmente, esses botões deixam de funcionar. Como arrumo?

 

HTML:

<div class="nota left">
  <label>NOTA:</label>
  <input type="text" value="0,0" maxlength="3" class="maskNota" />
  <!-- Controladores -->
  <a href="#" class="nota-mais" title="Aumentar nota"><img src="img/voto_mais.png" alt="" /></a>
  <a href="#" class="nota-menos" title="Diminuir nota"><img src="img/voto_menos.png" alt="" /></a>
</div>

 

jQuery:

// Botões de mais/menos nota
var notaMais = $('.nota-mais'),
notaMenos = $('.nota-menos');


// Nota mais
notaMais.click(function(n){
n.preventDefault();


var pai = $(this).parents()[0],
inputNota = $('.maskNota', pai),
notaVal = inputNota.val().replace(',','.'),
notaVal = parseFloat(notaVal) + parseFloat(0.1),
notaVal = notaVal.toFixed(1);


if (notaVal >= 10) {
inputNota.attr('value', '10');
}
else {
inputNota.attr('value', notaVal.replace('.',','));
}
});


// Nota menos
notaMenos.click(function(b){
b.preventDefault();


var pai = $(this).parents()[0],
inputNota = $('.maskNota', pai),
notaVal = inputNota.val().replace(',','.'),
notaVal = parseFloat(notaVal) - parseFloat(0.1),
notaVal = notaVal.toFixed(1);


if (notaVal <= 0) {
inputNota.attr('value', '0,0');
}
else {
inputNota.attr('value', notaVal.replace('.',','));
}
});

 

Exemplo Online

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei como resolver mas não sei te explicar porque (mas depois a gente pesquisa):

 

substitui o .attr por .val nas duas classes, e tira o 'value', tbm:

else {
    inputNota.val(notaVal.replace('.',','));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu sei como resolver mas não sei te explicar porque (mas depois a gente pesquisa):

 

substitui o .attr por .val nas duas classes, e tira o 'value', tbm:

else {
    inputNota.val(notaVal.replace('.',','));
}

 

Aee! Funcionou! Obrigado \o\

 

 

tem que ser numero real ?

 

porque inteiro da pra você usar o type number e só.

 

é são notas né? ai tem que usar números reais mesmo!

 

Sim, tem que ser real.

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.