使用javascript打印包含文本字段的div内容时出现问题?

时间:2014-05-07 06:40:35

标签: javascript html

这是我打印的div。

<div id="leftdes">In order to purchase and obtain a copy of your certified IRS Transcript for the year </strong>
  <div>
    AUTHORIZED SIGNATURE ________________________________ 
    <input title="Enter Date" name="aut_date" id="aut_date" type="text"  value="" onClick="rem_valid(this.id);"/>
  </div>
  <div class="search-raw" style="width:98%;">
    <select title="Select Suffix" name="a_suff" id="a_suff" class="input-4" style="padding:5px;" onClick="rem_valid(this.id);">
      <option value="" selected="selected">SUFFIX</option>
      <option value="Jr">Jr</option>
      <option value="Sr">Sr</option>
      <option value="I">I</option>
      <option value="II">II</option>
      <option value="III">III</option>
    </select>
  </div>
  <input title="Enter Company Name" name="a_cname" id="a_cname" type="text"  value="" onClick="rem_valid(this.id);"/></br></br>
</div>

我正在尝试使用下面的javascript代码打印上面的 div 。但我没有得到输入字段的值。帮我解决这个问题。

function printdiv(divid)
{
  var divElements = document.getElementById(divid).innerHTML;
  //var name="US Background Check";
  var oldPage = document.body.innerHTML;
  var current=document.body.innerHTML = "<html><head><title></title></head><body><img src='images/logo.png'/></br>"+divElements+"</body>";
  window.print();
  document.body.innerHTML=oldPage;
}

单击下面的按钮时调用打印功能“printdiv”。

<input name="but" id="but1" type="button"   value="PRINT"  onClick="printdiv('leftdes');"/>

2 个答案:

答案 0 :(得分:0)

实际上,您无法通过这种方式获取字段的值。但是,您获得的是默认值,而不是用户输入的值。

如下所示:当页面加载时,字段将填充其默认值(&#34;&#34;用于文本字段,以及下拉菜单的第一个选项)。然后,当用户更改这些字段时, HTML标记的属性永远不会更改,它们会保留默认值。

换句话说,当您调用document.getElementById(divid)时,它会返回最初加载的HTML代码。如果您通过键入手动更改值,则无法看到这些更改。

最简单的解决方案之一是访问这些值,并且在您的函数内部,当您更改body的内容时,只需放置这些值而不是从document.getElementById(divid)获取的HTML

var aut_date = document.getElementById("aut_date").value;
var a_suff = document.getElementById("a_suff").value;
var a_cname = document.getElementById("a_cname").value;

document.body.innerHTML = "... <input ... value='"+ aut_date +"' ...> etc.";

顺便说一句,当你执行<html><head><title></title></head><body>时,你不需要添加var current=document.body.innerHTML =,因为你已经 {{1}元素。现在,您将HTML文档,标题和页面标题放在正文中......出于同样的原因,您也不应该使用body结束字符串。

答案 1 :(得分:0)

尝试这个

function printDiv(divName) {
    var inpText = document.getElementsByTagName("input")[0].value;
    var printContents = document.getElementById(divName).innerHTML;
    var originalContents = document.body.innerHTML;
    document.body.innerHTML = printContents;
    document.getElementsByTagName("input")[0].value = inpText;
    window.print();
    document.body.innerHTML = originalContents;
    document.getElementsByTagName("input")[0].value = inpText;
    }