【问题标题】:Add Checked Table Rows to Email Body将选中的表格行添加到电子邮件正文
【发布时间】:2017-11-06 08:18:14
【问题描述】:

我有一个表格,可以通过选中一个复选框来选择每一行。 无论选择什么行,我都希望将这些行粘贴到按下“结帐”按钮时弹出的电子邮件正文中。

目前,每当我点击“结帐”按钮时,都会弹出电子邮件并显示表格中的第一行,无论是否选中,仅此而已。

如何根据是否选中显示多个选择?

表:

<section id="checkout-btn"> 
<button id="checkout" name="order" onclick="sendMail(); return false">Checkout</button>
</section>

<br>

<table id="merchTable" cellspacing="5" class="sortable">
    <thead>
        <tr class="ui-widget-header">
            <th class="sorttable_nosort"></th>
            <th class="sorttable_nosort">Loc</th>
            <th class="merchRow">Report Code</th>
            <th class="merchRow">SKU</th>
            <th class="merchRow">Special ID</th>
            <th class="merchRow">Description</th>
            <th class="merchRow">Quantity</th>
            <th class="sorttable_nosort">Unit</th>
            <th style="display: none;" class="num">Quantity #</th>
        </tr>
    </thead>
    <tbody>

        <?php foreach ($dbh->query($query) as $row) {?>

        <tr>
            <td class="ui-widget-content"><input type="checkbox" class="check" name="check" id="checkid-<?php echo intval ($row['ID'])?>"></td>
            <td class="loc ui-widget-content" data-loc="<?php echo $row['Loc'] ?>"><input type="hidden"><?php echo $row['Loc'];?></td>
            <td name="rows[0][0][rp-code]" class="rp-code ui-widget-content" align="center" data-rp-code="<?php echo $row['Rp-Code'] ?>" id="rp-code-<?php echo intval ($row['Rp-Code'])?>"><?php echo $row['Rp-Code'];?></td>
            <td name="rows[0][0][sku]" class="sku ui-widget-content" data-sku="<?php echo $row['SKU'] ?>" id="sku-<?php echo intval ($row['SKU'])?>"><?php echo $row['SKU'];?></td>
            <td name="rows[0][0][special-id]" class="special-id ui-widget-content" data-special-id="<?php echo $row['Special-ID'] ?>" align="center" id="special-id-<?php echo intval ($row['Special-ID'])?>"><?php echo $row['Special-ID'];?></td>
            <td name="rows[0][0][description]" class="description ui-widget-content" data-description="<?php echo $row['Description'] ?>" id="description-<?php echo intval ($row['Description'])?>"><?php echo $row['Description'];?></td>
            <td name="rows[0][0][quantity]" class="quantity ui-widget-content" data-quantity="<?php echo $row['Quantity'] ?>" align="center" id="quantity-<?php echo intval ($row['Quantity'])?>"><?php echo $row['Quantity'];?></td>
            <td name="rows[0][0][unit]" class="unit ui-widget-content" data-unit="<?php echo $row['Unit'] ?>" id="unit-<?php echo intval ($row['Unit'])?>"><?php echo $row['Unit'];?></td>
            <td name="rows[0][0][quant]" style="display: none;" class="quantity_num ui-widget-content"><input type="textbox" style="width: 100px;" class="spinner" id="spin-<?php echo intval ($row['ID'])?>"></td>
        </tr>

    <?php } ?>

    </tbody>
</table>

向电子邮件添加数据的 Javascript:

function sendMail() {
    var link = "mailto:me@example.com"
             + "?subject=" + encodeURIComponent("Order")
             + "&body=" + encodeURIComponent($('.loc').data('loc')) + '\xa0\xa0' + encodeURIComponent($('.rp-code').data('rp-code')) + '\xa0\xa0' + encodeURIComponent($('.sku').data('sku')) + '\xa0\xa0' + encodeURIComponent($('.special-id').data('special-id')) + '\xa0\xa0' + encodeURIComponent($('.description').data('description')) + '\xa0\xa0' + encodeURIComponent($('.quantity').data('quantity')) + '\xa0\xa0' + encodeURIComponent($('.unit').data('unit')) + '\xa0\xa0' + encodeURIComponent($('.quantity_num').data('quantity_num'));

    window.location.href = link;
}

【问题讨论】:

    标签: javascript php html email checkbox


    【解决方案1】:

    您在 PHP 标记之外调用诸如 rows[0][0][rp-code] 之类的数组元素。 您可以通过将所有内容嵌套在 PHP 标记内并回显每个表格元素来更轻松地创建表格。 像这样:

    echo <tr>;
    echo <td name="rows[0][0][rp-code]">Some Text</td>;
    echo </tr>;
    

    你也可以在 javascript 中做任何事情,但这取决于你的喜好

    【讨论】:

      【解决方案2】:

      虽然像这样通过 JS 发送电子邮件是个糟糕的主意,但你可以试试:

      function sendMail(){
        var link = "mailto:me@example.com"
        + "?subject=" + encodeURIComponent("Order")
        + "&body=";
      
        var body = '';
      
        $('table tr input[name="check"]:checked').each(function(){
          var current_tr = $(this).parent().parent();
      
          var loc = current_tr.find('.loc').data('loc');
          body +=  encodeURIComponent(loc) + '\xa0\xa0';
      
          var loc =current_tr.find('.rp-code').data('rp-code');
          body +=  encodeURIComponent(loc) + '\xa0\xa0';
      
        });
      
        body += '"';
        link += body;
        console.log(link);
      }
      

      您需要遍历每个包含复选框的 TR 并检查它是否为 :checked 。 然后将您需要的 avery 数据添加到您的 body var 中。

      【讨论】:

      • 这很好用!我现在唯一的问题是我正在使用%0D%0A 在每行数据之后换行....但是,我不希望在第一个条目之前有换行符...我该怎么做它适用于除第一行之外的所有数据行,因此没有空白行开始电子邮件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      相关资源
      最近更新 更多