javascript - 使用 javascript 打印带有文本字段的 div 内容时遇到问题?

标签 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');"/>

最佳答案

确实,您不能通过这种方式获取字段的值。但是,您得到的是它们的默认值,而不是用户键入的值。

会发生以下情况:当页面加载时,字段会填充它们的默认值(“”用于文本字段,第一个选项用于下拉菜单)。然后,当用户更改这些字段时,您的 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 = ,因为您已经 body 中了元素。现在,您要在正文中放置一个 HTML 文档、一个页眉和一个页面标题……您也不应该以 </body> 结束您的字符串。 , 出于同样的原因。

关于javascript - 使用 javascript 打印带有文本字段的 div 内容时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23510532/

相关文章:

javascript - Minified angular2 - 有人成功完成此操作吗?

html - 多行文本标签

javascript - 根据完整关键字突出显示搜索关键字的文本

javascript - 如何使用同一 id 中的 javascript 检查输入中的值并仅更改小于 1.5 的输入的边框样式?

javascript - "Object.Key"使用 map 搜索

javascript - 鼠标仅悬停在文本上而不是整行

css - 将内联 block 的 div 居中

javascript - 如何在单击复选框时调用函数,该复选框是单击 d3 元素(如 rect)时弹出的

javascript - 单击所有包含 "Follow"的按钮

javascript - 将纸张图标和文本左对齐?