no obtener un error de número (NaN) html / js

Recibo un error de NaN al hacer clic en el botón de opción primero. La página tiene un botón de radio a3 cuando hago clic en el primer botón dice que NaN y los 2 botones restantes no responden

este es mi HTML

<input type="hidden" name="totalamount" id="totalamount" value="" /    

también he mencionado mi JS

 $(document).ready(function(){ $('input[name=rmr]').click(function () { //make sure one is checked if($('input[name=rmr]:checked').length > 0) { $('#finalamount').html($("#totalamount").val() * $("input[name=rmr]:checked").val()); } }); }); 

Tres cosas:

1) Como está usando la cantidad del elemento “totalamount”, uno tiene que preguntar: ¿Estás seguro de que

 value="" 

… está dando salida a un número válido? Porque si no, entonces el código

 $('#finalamount').html($("#totalamount").val() * $("input[name=rmr]:checked").val()); 

… de hecho resultará en NaN . El operador * intentará convertir sus dos operandos de cadenas a números y, por supuesto, si el valor generado por ese código PHP no es un número válido (por ejemplo, si es “$ 0.00” o algo así), el resultado del la conversión será NaN . Y NaN veces cualquier cosa es NaN .

Este ejemplo de una cantidad no válida en el elemento “totalamount” arroja algo que se parece mucho al comportamiento que describes. (Ese código no es idéntico al suyo, realicé algunas refactorizaciones muy ligeras, ver más abajo. Pero a los fines de mostrar un número inválido, no importa).

2) No hay > al final de esa entrada oculta en el texto de su pregunta. Si hiciste un copiado y pegado directo, me pregunto si ese podría ser el problema.

3) Como está utilizando jQuery, no hay necesidad de los atributos onclick . En lugar:

 $(document).ready(function(){ $("input[name=rmr]").click(function(){ var checked = $("input[name=rmr]:checked"); updatePayment(this.value); if (checked.length > 0) { // make sure one is checked { $("#finalamount").html( $("#totalamount").val() * checked.val() ); } }); }); 

… suponiendo que quiera updatePayment llamado cada vez.

Ejemplo en vivo

updatePayment plegable El updatePayment en el comportamiento del click principal le permite evitar cualquier problema que pueda existir con el orden en que se llaman los manejadores DOM0 (atributo por clic) y DOM2 (los que se usan con jQuery).

Está funcionando bien para mí. Por favor encuentre el código de trabajo en jsfiddle . totalamount asegurarse de que el valor en la entrada totalamount sea ​​un valor numérico. Puede usar parseFloat() para convertir el valor de cadena en un valor flotante. Ex

  parseFloat($("#totalamount").val()) * $("input[name=rmr]:checked").val() 

Como @Crowder parseFloat() no es necesario, ya que javascript se ocupa de las conversiones de tipo.

Intenta poner un comando alert() / console.log() antes del cálculo para ver si totalAmount tiene un valor no numérico. alert($("#totalamount").val()) : alert($("#totalamount").val())