Estoy usando jspdf para crear un pdf a partir de algunos divs que tengo. Hay muchas entradas, algunas de ellas son necesarias, otras no. Necesito obtener solo los valores que no están vacíos de mis campos de entrada, pero no puedo hacer que funcione, aunque estoy 90% seguro de que mi código debería funcionar bien. Aquí está:
var doc = new jsPDF(); var i=1; $("div#home :input[type=text]").each(function(){ i++; var input = $(this); if(input.val().lenght>0){ console.log(input); var text = input.attr('placeholder')+': '+input.val(); doc.setFontSize(10); doc.text(10, (i*8) + (10),text+"\n"); } }); doc.save('a4.pdf') El código de arriba no funciona. cuando lo uso, no obtengo nada para el pdf. si .lenght>0 , funciona, pero obtiene todos los valores vacíos, por lo que mi pdf tiene muchos espacios en blanco. He intentado usar input.val().>0 , input.val().!=='' , y ninguno de ellos funciona, todos me dan el mismo resultado. ¿Cómo puedo verificar correctamente si mis campos de entrada no son nulos?
Esto es probablemente un error tipográfico:
input.val().lenght
debería ser esto en su lugar:
input.val().length
Debería ver un mensaje de error en la consola de su navegador, porque la length estaba mal escrita.
Encontré la respuesta a mi propio problema. El código está bien, el problema estaba en mi variable de incremento automático "i".
var doc = new jsPDF(); var i=1; $("div#home :input[type=text]").each(function(){ i++; var input = $(this); if(input.val().lenght>0){ console.log(input); var text = input.attr('placeholder')+': '+input.val(); doc.setFontSize(10); doc.text(10, (i*8) + (10),text+"\n"); } }); doc.save('a4.pdf')Como puede ver arriba, mi variable estaba fuera del ciclo "cada" que estaba recorriendo los valores no vacíos de mis campos de entrada. El ciclo estaba bien, pero como la variable "i ++" estaba fuera del ciclo, estaba contando valores vacíos y me daba espacios en blanco entre los que no estaban vacíos. Entonces, lo único que tenía que hacer era mover mi "i" dentro del bucle. Sí, un error bastante estúpido, pero me llevó horas descubrirlo.