为什么在window.print之后会丢失datepicker?

时间:2016-01-02 17:15:26

标签: jquery printing

我必须按this打印部分页面。这是代码:

window.print()

我知道复制innerHTML并在print命令后粘贴它会导致事件监听器丢失。但它可以通过 function printDiv(divName) { var printContents = document.getElementById(divName).innerHTML; var originalContents = document.body.innerHTML; document.body.innerHTML = printContents; window.print(); document.body.innerHTML = originalContents; } 附件来克服。但由于我是jQuery的新手,我不知道在datepicker附件的情况下如何在方法上使用此jquery。因此,每次使用此类JavaScript打印方法打印部分网页时,datepicker都会丢失,并且不会附加到所需的输入字段中。

在我的网站上,我点击$('body').on或其他输入字段以查看可行的日期选择器。然后按#dob按钮取消或完成打印作业。之后,您可以看到单击Print和表格的其他输入字段时没有附加日期选择器。

如何解决此问题?请不要推荐CSS打印系统,我必须使用这种方法。

附加datepicker的代码:

#dob

1 个答案:

答案 0 :(得分:1)

重置body标记的内容时,您需要重新初始化日期选择器。当您重置html时,所有功能绑定都将丢失。

function printDiv(divName) {
  var printContents = document.getElementById(divName).innerHTML;
  var originalContents = document.body.innerHTML;
  document.body.innerHTML = printContents;
  window.print();
  document.body.innerHTML = originalContents;
  // Reinitialize the datepicker here

  $('#dob, table.grid > tbody> tr > td > input[type="text"]').datepicker({
     dateFormat: 'yy-mm-dd',
     changeMonth: true,
     changeYear: true,
     yearRange: '1900:2016'
  });
}