2017-06-05 4 views
0

Ich habe eine Tabelle, in der jede Zeile ausgewählt werden kann, indem ein Kontrollkästchen aktiviert wird. Welche Zeilen auch immer ausgewählt werden, ich möchte, dass diese Zeilen in den Text einer E-Mail eingefügt werden, die beim Drücken der Schaltfläche "Zur Kasse" angezeigt wird.Geprüfte Tabellenzeilen zum E-Mail-Text hinzufügen

Momentan, wenn ich den "Checkout" -Button drücke, erscheint die E-Mail und es wird die erste Zeile in der Tabelle angezeigt, ob ausgewählt oder nicht, aber nicht mehr.

Wie kann ich mehrere Auswahlen basierend darauf anzeigen lassen, ob diese Option aktiviert ist?

Tabelle:

<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, die Daten zu E-Mail ergänzt:

function sendMail() { 
    var link = "mailto:[email protected]" 
      + "?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; 
} 

Antwort

1

Während diese terrbile Idee ist, E-Mails über JS so zu senden, können Sie versuchen:

function sendMail(){ 
    var link = "mailto:[email protected]" 
    + "?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); 
} 

Sie müssen über jede TR, die Kontrollkästchen enthält, iterieren und überprüfen, ob es :checked ist. Dann fügen Sie alle Daten, die Sie brauchen, in Ihre body var.

+0

Das funktioniert super! Die einzige Frage, die ich jetzt haben würde, ist, dass ich '% 0D% 0A' verwende, um nach jeder Datenzeile einen Zeilenumbruch zu haben ... aber ich möchte nicht, dass es vor dem ersten Eintrag einen Zeilenumbruch gibt ... wie kann ich es für alle Datenzeilen mit Ausnahme der ersten Zeile anwenden, so dass es keine leere Zeile zum Starten der E-Mail gibt? – Rataiczak24

+0

Fügen Sie 'body + = '% 0D% 0A';' direkt vor '});' –

+0

Wonderrful, thanks! – Rataiczak24

0

Sie rufen Array-Elemente wie rows[0][0][rp-code] außerhalb von PHP-Tags. Sie könnten die Tabellen einfacher erstellen, indem Sie alle in den PHP-Tags verschachtelten und die einzelnen Tabellenelemente widerspiegeln. Wie so:

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

Sie auch alles in Javascript tun könnte, aber dies hängt von Ihren Vorlieben

Verwandte Themen