Ich habe eine Tabelle mit mehreren Spalten, wobei eine Spalte Kontrollkästchen enthält. Wenn Sie ein Kontrollkästchen aktivieren und dann auf die Schaltfläche "Zur Kasse" klicken, werden die angegebenen Zeilen angezeigt und im Text einer E-Mail angezeigt.Alle überprüften Tabellenzeilen anzeigen
Ich bringe ursprünglich die obersten 100 Reihen herein, um das Informationslicht für den Benutzer zu halten. Ich habe auch eine Suchfunktion, wo der Benutzer nach bestimmten Zeilen suchen kann. Während Sie verschiedene Suchvorgänge manövrieren können und alle Checkboxen weiterhin im Sitzungsspeicher aktiviert sind, werden beim Drücken von "Checkout" nur die überprüften und aktuell auf der Seite angezeigten Tabellenzeilen angezeigt. Wenn ich also nach einer Tabellenzeile suchte und sie überprüfte, aber dann zu den ursprünglichen obersten 100 Zeilen zurückkehrte, indem ich auf Home klickte, wurde diese Zeile in der E-Mail nicht angezeigt.
Wie kann ich das beheben und ALLE Zeilen anzeigen, die überprüft wurden, ob sie auf der Seite sichtbar sind oder nicht?
HTML:
<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 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 class="sku ui-widget-content" data-sku="<?php echo $row['SKU'] ?>" id="sku-<?php echo intval ($row['SKU'])?>"><?php echo $row['SKU'];?></td>
<td 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 class="description ui-widget-content" data-description="<?php echo htmlspecialchars($row['Description']) ?>" id="description-<?php echo intval ($row['Description'])?>"><?php echo $row['Description'];?></td>
<td 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 class="unit ui-widget-content" data-unit="<?php echo $row['Unit'] ?>" id="unit-<?php echo intval ($row['Unit'])?>"><?php echo $row['Unit'];?></td>
<td 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 für keeping Kontrollkästchen aktiviert, überprüft, während der gesamten Sitzung:
$(function(){
$(':checkbox').each(function() {
var $el = $(this);
$el.prop('checked', sessionStorage[$el.prop('id')] === 'true');
});
$('input:checkbox').on('change', function() {
var $el = $(this);
sessionStorage[$el.prop('id')] = $el.is(':checked');
});
});
JavaScript, das in Daten aus der Tabelle bringt eine E-Mail:
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 data = current_tr.find('.loc').data('loc');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.rp-code').data('rp-code');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.sku').data('sku');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.special-id').data('special-id');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.description').data('description');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.quantity').data('quantity');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.unit').data('unit');
body += encodeURIComponent(data) + '\xa0\xa0';
var data =current_tr.find('.spinner').data('spinner');
body += encodeURIComponent(data) + '\xa0\xa0';
body += '%0D%0A';
});
body += '';
link += body;
console.log(link);
window.location.href = link;
}
Ihr Code ist nicht klar. Um eine überprüfte Eingabe auszuwählen, verwenden Sie '$ ('input: checked')' anstelle von '$ ('input: checkbox')'. Oder verwenden Sie '$ (" input [type = 'checkbox'] ")', wenn Sie ein Kontrollkästchen auswählen möchten. – aslantorret
Keiner dieser Wege funktioniert ... '$ ('input: checkbox')' Dies erzeugt das gleiche Ergebnis, aber die Checkboxen bleiben nicht markiert, wenn Sie auf eine andere Seite gehen. '$ (" input [type = 'checkbox'] ")' dies hält alles überprüfte, wenn zu einer anderen Seite über die Suche navigiert, aber zeigt die gleichen Ergebnisse, die ich bereits bekommen – Rataiczak24