【问题标题】:Capturing the values of form elements for printing捕获表单元素的值以进行打印
【发布时间】:2012-09-19 09:31:55
【问题描述】:

我在使用 JQuery 方面相当称职,并且通常可以通过一些麻烦来处理大多数事情。我尝试用谷歌搜索这个问题,但要么我搜索了错误的术语,要么没有发布的解决方案。

在为订单页面准备 print.css 文件时,有人问我是否可以删除文本 INPUTS 并仅打印出它们的值,以及包含地址的 SELECT 菜单。

在研究时,我确实遇到了 .val() 方法 - 现在称为 .fieldValue() - 和 .serializeArray() 所以我想我知道如何提取值,而不是如何将其打印到位表单元素。

要明确一点:
例如,选择菜单显示默认送货地址的第一行。 对于打印输出,我希望它能够跨多行显示整个地址,并且没有 SELECT 菜单。

我在下面有这个解决方案,它允许我捕获值,但我不知道如何插入它们来代替表单元素: Printing an HTML form using jQuery

感谢您的帮助!


编辑 捕获的值只能插入到打印输出中,不能替换 html 中的表单元素。

【问题讨论】:

    标签: jquery printing


    【解决方案1】:

    这是一个作为 jsfiddle 的基本解决方案:http://jsfiddle.net/2mBSS/15/

    基本上:当发生某些事情时(例如单击按钮),循环遍历相应的元素并使用 .replaceWith() jQuery 函数将它们替换为它们的值...您可以使用 .val() 获得。如您所见,这适用于 <select><input> 元素。

    您当然可以创建一个更复杂的 HTML 元素来替换输入,例如 "<p>" + val + "</p>"

    请注意,在重新加载页面之前,这将完全删除表单输入字段。这可能根本不重要(例如,如果您在新选项卡中打开打印页面)或者它可能会破坏您网站的设计......我个人更喜欢使用打印 CSS 表来设置打印页面的样式,例如删除输入框的边框。但如果您需要在 <select> 元素中提取选定选项的值,这可能效果不佳。

    如果您想保持页面完整,我建议您嵌入一些隐藏元素来保存文本以进行打印,并在单击打印按钮时将输入表单的值复制到它们...然后在您的打印 CSS您隐藏所有输入,而是显示支持元素(例如 <p><span>)。

    【讨论】:

    • 您好 Anders,感谢您抽出宝贵时间提供帮助。我也在使用一些 print.css 来正确格式化页面。我将使用它来删除文本输入上的边框/阴影,但这有助于从选择菜单中输出地址。我添加了 window.print();到您编写的函数的末尾,但正如您所说,该函数正在从页面中删除输入/选择。单击“打印”按钮会打开浏览器打印对话窗口,而不是另一个选项卡,因此一旦用户打印了文档,他们就会返回到现在看起来一团糟的原始页面。
    • 我已经用另一段更​​新了我的答案,其中包含解决此类问题的方法。如果有帮助,或者您需要更多信息,请告诉我。
    • 听起来是个不错的解决方案。我试了一下,但还没有成功:[jsfiddle.net/gyUDM/]
    • 我并不打算让您使用<input type="hidden" />,而是使用 with CSS 隐藏并在您使用 CSS 时显示的普通 HTML 元素打印。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多