我制作了这个打开2页的JS功能
function edit(id){
window.open('<?php echo site_url();?>store_out/store_out_print/'+id);
window.open('<?php echo site_url();?>store_out/delivery_print/'+id);
document.getElementById('print').target = '_blank';
}
我有那个显示所有可能记录的表,用户可以选择一行并点击打印图像,这样就打开了两个页面:
<?php
for($i=0;$i<sizeof($storeout);$i++){ ?>
<tr class="gradeZ" id="<?php echo $storeout[$i]->storeout_id;?>" onclick="edit(this.id); ">
<td><?php printf("%06d",$i+1);?></td>
<td><?php echo $storeout[$i]->storeout_id;?></td>
<td><?php echo $storeout[$i]->storeout_modified_time;?></td>
<td><?php echo $account[$i][0]->account_name;?></td>
<td><?php echo $storeout[$i]->rof_id != 0 ? "R.O.F" : "S.O";?></td>
</tr>
<?php } ?>
我想在选择特定行并单击打印图像时,执行两个功能以打开两个不同的页面(delivery / store_out)。
任何想法的人?
答案 0 :(得分:0)
我将假设td
位于tr
中,这是在循环中以编程方式生成的(即,您将有多个tr
,td
,和img
)。我还假设jQuery可用。
第一个问题是如果你在一个循环中创建的行数超过1行,那么你将拥有一堆具有相同id="print"
的东西。这不是好的js。
您应该将store_out
(或者您尝试访问控制器的ID)附加到id属性。像id="print_<?php echo $thing->id;?>"
这样的东西。这将使您获得要传递给编辑功能的ID。我还会添加一个class="print"
,这将使下面的内容更容易。所以,整行看起来像是:
<td width="5%"><a id="print_<?php echo $thing->id; ?>" class="print" href="#" ><img src="<?php echo site_url();?>/images/print.png" border="0" title="Print" height="25" width="25"/> </a></td>
会输出类似的内容:
<td width="5%"><a id="print_1234" class="print" href="#" ><img src="http://example.com/images/print.png" border="0" title="Print" height="25" width="25"/> </a></td>
其次,就我所知,你没有将id
传递给方法。考虑到你注意到上述情况,你可以从id属性中提取id。
$('.print').click(function(){
var id = $(this).attr('id').split('_')[1];
edit(id);
})