Problems with balance validation

1

Hello, personal beauty?

I have a problem in my code, I am doing a validation to check if the amount entered by the user is greater than the balance, if it is I send an error to the user.

The code is as follows:

                    $('#txb' + sequencia).on('change', function () {

                    var saldo = $($('#tbPimItem tbody tr td').get(7)).text();
                    var qtde = $(this).val();

                    console.log(qtde > saldo);

                    if (qtde > saldo) {

                        var mensagem = {
                            Tipo: 'A',
                            Mensagem: 'Atenção, a quantidade não pode ser maior que o saldo.'
                        };
                        console.log();

                        $(this).val(saldo);
                        exibirMensagem(mensagem, 100);
                    }

                });

It's within this code:

$(result.Retorno.PimItem).each(function () {

                sequencia++;

                $('#tbPimItem tbody').append($('<tr style="cursor:pointer"></tr >')

                    .append($('<td><input type="checkbox" id="cb' + sequencia +'" /></td>'))
                    .append($('<td></td>').text(this.Sequencia))
                    .append($('<td></td>').text(this.Item.Id))
                    .append($('<td style="width:80px;"><input type="number" max="3" id="txb' + sequencia + '" class="form-control" style="width:80px;" /></td>'))                    
                    .append($('<td></td>').text(this.Item.Descricao))
                    .append($('<td></td>').text(this.DescricaoComplementar))
                    .append($('<td></td>').text(this.Ordem.Id))                      
                    .append($('<td></td>').text(this.Item.Saldo))   
                );  

                $('#txb' + sequencia).val(this.Item.Saldo);

                $('#txb' + sequencia).on('change', function () {

                    var saldo = $($('#tbPimItem tbody tr td').get(7)).text();
                    var qtde = $(this).val();

                    console.log(qtde > saldo);

                    if (qtde > saldo) {

                        var mensagem = {
                            Tipo: 'A',
                            Mensagem: 'Atenção, a quantidade não pode ser maior que o saldo.'
                        };
                        console.log();

                        $(this).val(saldo);
                        exibirMensagem(mensagem, 100);
                    }

                });

                if (this.Item.Saldo !== 0) return;
                $('#' + sequencia).prop('disabled', true); 
                $('#cb' + sequencia).prop('disabled', true);

            });

My problem is:

The balance is equal to 3, when I type 4 it validates, when I type 10 it does not validate. If I type 30 it validates.

It's as if it only checks the first digit.

    
asked by anonymous 04.07.2017 / 14:19

2 answers

1

You have to use numbers in comparison and not text (strings). One suggestion would be:

var saldo = $('#tbPimItem tbody tr td::last-of-type').text();
var qtde = this.value;

console.log(Number(qtde) > Number(saldo));
    
04.07.2017 / 14:41
1

The comparison is being done between strings, you can do cast to Number :

var saldo = parseFloat($($('#tbPimItem tbody tr td').get(7)).text());
var qtde = parseFloat($(this).val());
    
04.07.2017 / 14:23