我有一个查询来自人。数据显示在表格中:
echo "<div id='rightcontent'><table id='one-column-emphasis'>";
echo "<th><input type='checkbox' name='csv_all' id='csv_all'></th><th>Namn</th><th>Adress</th><th>Adress2</th><th>Adress3</th><th>Personnummer</th><th>Telefonnummer</th><th>Telefonnummer2</th>";
$antal_sidor = round($obj->search->wp->totalHits / $obj->search->wp->pageSize);
foreach($obj->search->wp->features as $fish) //Loopar ut 50st (pageSize)
{
echo "<tr>";
echo "<td><input type='checkbox' value='csv' class='csv'></td>";
echo "<td>" . $fish->name . "</td>";
foreach($fish->addresses as $ad)
{
echo "<td>" . $ad->label . " " . $ad->postcode . " " . $ad->area . "</td>";
}
if(!empty($fish->dateOfBirth))
{
echo "<td>" . $fish->dateOfBirth . "</td>";
}
if(!empty($fish->phoneNumbers))
{
foreach($fish->phoneNumbers as $ph)
{
echo "<td>" . $ph . "</td>";
}
}
echo "</tr>";
}
echo "</table>";
如您所见,行中列出了一个复选框字段。目的是标记所有checbox,然后将地址导出为CSV。但是当我选中所有复选框时,如何获取tds的值,地址?
答案 0 :(得分:0)
这是一个功能齐全的版本,它从已检查的行创建CVS,并且另外从PHP获取JSON而不是通过网络发送表
$("#csv_all").on("click", function () {
$(".csv").prop("checked", this.checked);
});
$("#makeCsv").on("click", function () {
var csv = [];
$(".csv:checked").each(function () {
var row = [];
$(this).parent().siblings().each(function () { // all TDs
row.push('"' + $(this).text() + '"');
});
if (row.length > 0) csv.push(row.join(","));
});
$("#csv").val(csv.length > 0?csv.join("\n"):"");
});
答案 1 :(得分:0)
缺少详细信息,您希望在发送表单时使用PHP在javascript或服务器端执行此客户端操作吗? 对于服务器端,您需要在复选框输入中添加一个名称,该字段将与其值一起发送给PHP。对于客户端,您可以先在DOM中插入数据,然后使用jQuery查找已检查的输入并检索数据。
foreach($obj->search->wp->features as $fish) //Loopar ut 50st (pageSize)
{
echo "<tr data-phone-numbers='" . json_encode($fish->phoneNumbers) . "' data-addresses='" . json_encode($fish->addresses) . "'>";
echo "<td><input type='checkbox' value='csv' class='csv'></td>";
echo "<td>" . $fish->name . "</td>";
...
然后使用jQuery收集已检查的输入并找到编码的地址:
var addressList = [];
$("input[type='checkbox']:checked").each(function(){
addressList.push({
"phones": JSON.parse($(this).closest("tr").data("addresses")),
"addresses": JSON.parse($(this).closest("tr").data("phone-numbers"))
});
});
//addressList now is an array phones and addresses objects for all the checked items
另一方面,我看不出你的代码将如何产生格式良好的表格单元格,你在TR中有一个不可预测的TD数量。您可能需要重新评估表结构,以确保每行都有固定数量的单元格。