点击打印Codeigniter,Javascript打开两个窗口

时间:2013-01-30 17:15:44

标签: javascript codeigniter

我制作了这个打开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)。

任何想法的人?

1 个答案:

答案 0 :(得分:0)

我将假设td位于tr中,这是在循环中以编程方式生成的(即,您将有多个trtd ,和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);
})