Javascript 使用用户输入生成jsPDF,但当前页面不显示更改

Javascript 使用用户输入生成jsPDF,但当前页面不显示更改,javascript,jquery,forms,pdf-generation,jspdf,Javascript,Jquery,Forms,Pdf Generation,Jspdf,因此,目前我有一个带有HTML/表单复选框的静态页面。只有选中的复选框才会生成JS pdf;内容通过父div从“复选框”切换到“我的HTML”。问题是在点击“生成PDF”按钮之后。当前页面,然后显示所做的更改以及解析为PDF的内容,只有PDF应该通过此代码生成。当前页面完全不应更改。有什么想法吗基本上在点击“下载PDF”后,PDF会通过上面描述的用户输入下载,并在下面用JS编写;页面本身不应反映这些更改。目前,PDF生成准确,但页面也会更改为PDF格式。 $(文档).ready(函数(){ 文本

因此,目前我有一个带有HTML/表单复选框的静态页面。只有选中的复选框才会生成JS pdf;内容通过父div从“复选框”切换到“我的HTML”。问题是在点击“生成PDF”按钮之后。当前页面,然后显示所做的更改以及解析为PDF的内容,只有PDF应该通过此代码生成。当前页面完全不应更改。有什么想法吗基本上在点击“下载PDF”后,PDF会通过上面描述的用户输入下载,并在下面用JS编写;页面本身不应反映这些更改。目前,PDF生成准确,但页面也会更改为PDF格式。

$(文档).ready(函数(){
文本={
项目1:“项目框1内容html就在这里!Lorem ipsum dolor sit amet,Concertetur Adipising Elite,sed do eiusmod Temporal Incidedut ut Labor et dolore magna aliqua.”,
项目2:“现在它的项目框2html内容在这里!Lorem ipsum dolor sit amet,Concertetur Adipising Elite,sed do eiusmod Temporal Incidedut ut Labor et dolore magna aliqua.”,
第3项:“这是第4项的示例html!Lorem ipsum dolor sit amet,Concertetur Adipising Elite,sed do eiusmod Temporal Incidedut ut Labor et dolore magna aliqua.”,
第4项:“第5项html内容在这里!Lorem ipsum dolor sit amet,Concertetur Adipising Elite,sed do eiusmod Temporal Incidedut ut Labor et dolore magna aliqua.”,
}
$(“#容器”).css('background','#fff'))
$('.download pdf')。单击(函数(){
//这将触发在PDF中生成以下内容:,
//不在页面>上显示,然后生成pdf。只需pdf!
notChecked=$(“输入[类型=复选框]:未(:选中)”).parent();
隐藏();
yesChecked=$(“输入[类型=复选框]:选中”).parent();
$.each(yesChecked,函数(索引,el){
$(el.show().html(文本[$(el.attr('id')));
});
var pdf=新的jsPDF('p','pt','a4');
pdf.addHTML(document.getElementById('records'),function(){
setTimeout(函数(){
location.reload();
},3000);
}); 
var文件='test';
如果(单据类型!==“未定义”){
doc.save(文件+'.pdf');
}else if(pdf的类型!=“未定义”){
setTimeout(函数(){
pdf.save(file+'.pdf');
//$(“#item4”).hide();
}, 2000);
}否则{
警报(“错误0xE001BADF”);
}
});
$('.checkmate')。在('click',function()上{
如果($(this).is(':checked'))
$(this.parent('div').css({“color”:“white”,“background”:“green”});
其他的
$(this.parent('div').css('background-color','');
});
});
。。为了帮助说明(但是PDF生成功能需要live server),如果您可以想象维护功能正常的“静态页面复选框条件>PDF”,而只是没有静态页面本身,请更改用户处于启用状态。这就是目标


.

您可以像这样将pdf保存在
addHTML
的回调中

var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML(document.getElementById('records'), function(){
    pdf.save('test.pdf');
});
更新 当前页面完全不应更改

您正在更改DOM,因此页面将更改。如果不想编辑当前DOM,则需要克隆节点并将其传递到
pdf.save()
。这不起作用,我在文档中找不到任何原因,因为它太过时了。
用户保存文档后,您仍然可以重新加载页面,这将使DOM恢复为默认状态。

您能否解释变量
doc
是什么?它来自用于生成pdf的JSpdf js库。我什么都不做,我所有的代码都在那里。这个问题有点相关“”,但我还没有发现任何人像我一样根据用户输入生成PDF。非常感谢,但是静态页面仍然会随着按钮的单击而改变。问题是,不是如何生成PDF,PDF生成得很好,问题是如何获得它,因此只有PDF是随更改生成的,页面本身不会更改、更改或其他任何内容;这样,如果用户愿意,可以再次更改其输入。你送的正是我已经有的。。。谢谢你看了@邦杰姆斯邦德是的,对不起,我跑得有点快。我认为您需要先克隆节点,然后对克隆进行更改。但我似乎无法让它发挥作用。你有什么例子吗?重新加载页面会重置不理想的表单字段。@BondJamesBond是的,这是过时的文档,没有方法
addHTML
save
。我刚刚想了另一个解决方案,今天我会更新我的答案。太好了!让我们试试@阿尔彭
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML(document.getElementById('records'), function(){
    pdf.save('test.pdf');
});