2015-12-28 3 views
3

Нет Mather, что я пишу в полях ввода я получаю только NaN даже от загрузки страницы я получаю NaNJavascript Sum Поля ошибки NaN

Любая идея, почему? Мне нужно количество к * по цене и дать результат, вот код. Я отображение кода Теперь

<form action="?F=save-sale" method="post" name="venta"> 
<table class="table-global"> 
     <tr> 
     <td class="table-global-td-title">Cantidad 

     </td> 
     <td class="table-global-td-title">Precio venta</td> 
     <td class="table-global-td-title">Vendedor</td> 
     <td class="table-global-td-title">Documento</td> 

     <td class="table-global-td-title">M&eacute;todo de pago</td> 
     <td class="table-global-td-title">Suma total</td> 
     <td class="table-global-td-title"></td> 
     </tr> 
     <tr> 
     <td class="table-global-td-subtitle"><input type="number" class="input-global-100" name="cantidad" id="cantidad">   </td> 
      <td class="table-global-td-subtitle"><input type="number" class="input-global-100" name="venta" id="venta" value="0"></td> 
      <td class="table-global-td-subtitle"> 
      <select style="text-transform:capitalize" class="select-global-120" name="vendedor" id="vendedor"> 

    <option value="" selected>Seleccionar</option> 
    <option value="001">001</option> 

</select>   </td> 
     <td class="table-global-td-subtitle"> <select class="select-global-132" name="comprobante" id="comprobante"> 


      <option value="Boleta" selected>Boleta</option>   
      <option value="Factura">Factura</option> 


      </select>  </td> 
     <td class="table-global-td-subtitle"><select class="select-global-120" name="metodo" id="metodo" > 
      <option value="Transferencia">Transferencia</option> 

      <option value="Efectivo" selected>Efectivo</option> 
      <option value="Cheque">Cheque</option> 
      <option value="Transbank">Transbank</option> 



     </select></td> 
     <td class="table-global-td-subtitle"> 

      <input type="text" class="input-global-total-100" name="ventatotal" id="ventatotal" readonly value="0" />  </td> 
     <td class="table-global-td-subtitle"> 
     <input class="submit-global-120" type="submit" value="Realizar la venta" /></td> 
     </tr> 
     </table> 

<script> 
var aacosto = document.getElementsByName('costo')[0]; 
var aacostototal = document.getElementsByName('costototal')[0]; 
var aaventa  = document.getElementsByName('venta')[0]; 
var aaventatotal = document.getElementsByName('ventatotal')[0]; 
var aacantidad = document.getElementsByName('cantidad')[0]; 
var aaganancia = document.getElementsByName('ganancia')[0]; 
var aagananciatotal = document.getElementsByName('gananciatotal')[0]; 

function updateInput() { 
aaventatotal.value = parseFloat(aaventa.value) * parseFloat(aacantidad.value); 

} 

aaventa.addEventListener('keyup', updateInput); 
aaventatotal.addEventListener('change', updateInput); 
aacantidad.addEventListener('keyup', updateInput); 
updateInput(); 
</script> 
</form> 

Вот Fiddle так вы, ребята, можете увидеть его работу

https://fiddle.jshell.net/v6spxoqv/10/

+0

Является ли ваш скрипт в нижней части '' элемента ? Если нет, либо переместите его туда, либо поместите все свои 'var' -программы _ в функции function_. – Xufox

+0

Нет в середине кода внутри HTML-формы – Locatarios

+0

Но не под полями ввода? Затем элементы HTML еще не загружены. Просто поместите скрипт _under_ в форму HTML с вкладками. – Xufox

ответ

2

Просто это условие if (aaventa.value && aacantidad.value) перед вычислением произведения. Он гарантирует, что значения не являются пустым. Все остальное в порядке.

var aaventa = document.getElementsByName('venta')[0]; 
 
var aaventatotal = document.getElementsByName('ventatotal')[0]; 
 
var aacantidad = document.getElementsByName('cantidad')[0]; 
 

 
function updateInput() { 
 
    if (aaventa.value && aacantidad.value) 
 
    aaventatotal.value = parseFloat(aaventa.value) * parseFloat(aacantidad.value); 
 
    else 
 
    aaventatotal.value = 0; 
 

 
} 
 

 
aaventa.addEventListener('keyup', updateInput); 
 
aaventatotal.addEventListener('change', updateInput); 
 
aacantidad.addEventListener('keyup', updateInput); 
 
updateInput();
<input name="venta"> 
 
<input name="cantidad"> 
 
<input name="ventatotal">

+0

Почему этот downvote? Позаботьтесь об этом? – void

+0

@Xufox Если элемент * не * в dom, то элемент element.value выдаст ошибку. – andlrc

+0

Было бы больно, если мне понадобится больше входов для обновления ... – Locatarios

0
<input id="venta"> 
<input id="cantidad"> 
<input id="ventatotal"> 

Использование JQuery

$('#venta').change(function(){ updateInput() ;}); 
$('#cantidad').change(function(){ updateInput() ;}); 
$('#ventatotal').change(function(){ updateInput() ;}); 
Смежные вопросы