Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

NaN nos campos númericos

Após subir o servidor lite-server, quando adiciono uma negociação, nas colunas quantidade e valor demonstra o valor NaN, como se não fosse número o dado digitado. Segue meu código:

import { NegociacoesView , MensagemView, View } from '../views/index';
import { Negociacoes, Negociacao } from '../models/index';

export class NegociacaoController {

    private _inputData : JQuery;
    private _inputQuantidade : JQuery;
    private _inputValor : JQuery;
    private _negociacoes = new Negociacoes();
    private _negociacoesView = new NegociacoesView('#negociacoesView');
    private _mensagemView = new MensagemView('#mensagemView');

    constructor(){
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        console.log(this._inputQuantidade);
        this._inputValor = $('#valor');
        this._negociacoesView.update(this._negociacoes);
    }

    adiciona(event : Event){
        event.preventDefault();
        console.log(this._inputQuantidade);
        const negociacao = new Negociacao(new Date(this._inputData.val().replace(/-/g,',')), parseInt(this._inputQuantidade.value),
                    parseFloat(this._inputValor.value));

        this._negociacoes.adiciona(negociacao);
        this._negociacoesView.update(this._negociacoes);
        this._mensagemView.update('Negociação adicionada com sucesso.')

        /*this._negociacoes.paraArray().forEach(negociacao => {
            console.log(negociacao.data);
            console.log(negociacao.quantidade);
            console.log(negociacao.valor);
        })*/
    }
}

import { View } from './View';
import { Negociacoes } from '../models/index';

export class NegociacoesView extends View<Negociacoes>{


    template(model : Negociacoes) : string {
        return `<table class="table table-hover table-bordered">
            <thead>
                <tr>
                    <th>DATA</th>
                    <th>QUANTIDADE</th>
                    <th>VALOR</th>
                    <th>VOLUME</th>
                </tr>
            </thead>

            <tbody>
                ${model.paraArray().map(negociacao =>
                `
                    <tr>
                        <td>${negociacao.data.getDate()}/${negociacao.data.getMonth() + 1}/${negociacao.data.getFullYear()}</td>
                        <td>${negociacao.quantidade}</td>
                        <td>${negociacao.valor}</td>
                        <td>${negociacao.volume}</td>
                    </tr>
                `).join('')}

            </tbody>

            <tfoot>
            </tfoot>
        </table> `
    }
}
3 respostas

Olá, Fabrício.

Qual o valor que você está digitando no campo?

Fala ai Fabricio, seu código a principio parece estar correto, assim como o Marco disse, precisamos saber os valores que estão sendo inseridos nos inputs.

solução!

Achei o problema, estava aqui: parseInt(this._inputQuantidade.value). Como estou utilizando jquery o correto é this._inputQuantidade.val(). Obrigado a todos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software