class jqprint 失效_JavaScript 实现局部打印(动态获取的内容)

第一次写打印,只知道window.print(),可是直接出来的是当前页面的所有内容,而我要做的是打印当前模态框里展示的内容。

网上搜了一下,都是指定具体的div,然后获取该div里的内容赋值给window.document.body.innerHTML

var bodyHtml = window.document.body.innerHTML;

window.document.body.innerHTML = html;//html为当前显示的div的内容

window.print();

window.document.body.innerHTML = bodyHtml;

但是这个就导致了一个问题,如果是打印的内容这样的,可以直接获取打印,但如果是赋值到input标签里的,根本就获取不到值啊。

怎么办,接着搜呗。

找到两种方法,第一种,也是比较原始的:将表单中的数据进行绑定,获取过来重新赋值给对应的input中;

//打印模态框问卷内容

$('.myform').on('click', 'a[name="printInfo"]', function () {

$('#listModal').modal('hide');//关闭模态框

$('#quesInfoModal').modal('hide');

var weI = this.id;

onprint(weI);

});

});

//打印指定区域

function printHtml(html) {

var bodyHtml = window.document.body.innerHTML;

window.document.body.innerHTML = html;

window.print();

window.document.body.innerHTML = bodyHtml;

//上面关于bodyHtml赋值的两项操作可以忽略,因为要关闭模态框并且刷新页面

//这个地方必须要刷新一下页面,打印重新赋值之后,模态框里的功能都不能正常使用,

包括父页面列表中的功能也失效,这个问题不是很明白,有知道的可以帮忙解决一下

refreshFrame();//刷新页面

}

function onprint(weI) {

if (weI == 'wenjuanI') {//调查问卷详情

bindData('#quesInfoModal');

var html = $('#quesInfoModal').html();

} else {

bindData('#listModal');

var html = $('#listModal').html();

}

printHtml(html);

}

//将表单中手动填写的数据进行绑定,便于html()的时候获取到

function bindData(modalID) {

//type=text,type=number, 同时如果checkbox,radio,select>option的值有变化, 也绑定一下

$(modalID + " input[type='text']").each(function () {

$(this).attr('value', $(this).val());

});

$(modalID + " input[type='number']").each(function () {

$(this).attr('value', $(this).val());

});

$(modalID + " input,select option").each(function(){

$(this).attr('value',$(this).val());

});

//type=checkbox,type=radio 选中状态

$(modalID + " input[type='radio']").each(function () {

if ($(this).attr('placeholder')) {//$(this).attr('checked')

$(this).attr('checked', true);

} else {

$(this).removeAttr('checked');

}

});

$(modalID + " input[type='checkbox']").each(function () {

if ($(this).attr('placeholder')) {//$(this).attr('checked')

$(this).attr('checked', true);

} else {

$(this).removeAttr('checked');

}

});

//$('.modal-backdrop').each(function () {//关闭模态框的遮罩层

// $(this).removeClass('in');

//});

}

注意:这种方法,必须要刷新一下页面,打印重新赋值之后,模态框里的功能都不能正常使用,包括父页面列表中的功能也失效,(相当于页面变成了一个纯静态页面,没有js了)这个问题不是很明白,有知道的可以帮忙解决一下啦

第二种方法,我看网上有说用jqprint插件的(http://www.jq22.com/jquery-in...),这个我也没有详细的看,只是稍微试了一下,也是不能获取到input的值,而且隐藏的div也一并给显示出来的了,效果不好,有会的可以指教一下啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值