1

这应该是一个客户列表,您可以在其中单击行以选择它们,然后将它们提交到数据库以进行 cron 作业以获取它们并向它们发送电子邮件。

我正在尝试突出显示行而不是使用复选框,这就是为什么我放置两个隐藏元素,一个用于客户端 ID,另一个 - bool 用于检查是否已单击行。

我想不通的是如何切换特定行的元素值(选中)。

<table>
<tbody>
<tr class="contactrow">
<input type="hidden" name="id" value="995"/>
<input type="hidden" name="checked" value="FALSE"/>
<td>Andrew Ostrich</td>
<td>AO Company</td>
<td>7537535</td>
<td>ao@aocompany.com</td>
</tr>
<tr class="contactrow">
<input type="hidden" name="id" value="296"/>
<input type="hidden" name="checked" value="FALSE"/>
<td>Brendon Evans</td>
<td>Institute of Modern Arts</td>
<td>648648468</td>
<td>bevans@ioma.co.uk</td>
</tr>
<tr class="contactrow">
<input type="hidden" name="id" value="421"/>
<input type="hidden" name="checked" value="FALSE"/>
<td>Rudy Thompson</td>
<td>Marine CORP</td>
<td>95939288</td>
<td>Rudee@mcorp.es</td>
</tr>
</tbody>
</table>

​另外, http://jsfiddle.net/FHjAc/

4

3 回答 3

1

部分问题是服务器将无法识别已检查哪些客户端 ID。所有这些input[type=checkbox]共享相同的name属性,该属性用于标识每个参数。

如果将name属性更改为checked[__ID__],则可以循环参数并将这些记录提交到数据库。

在 PHP 中,您将执行以下操作。

<?php

$checked = $_POST['checked'];

foreach( $checked as $id ) {
  // do something with the $id here
}

更新

我没有意识到您正在为选中的字段使用隐藏输入。如果您将其更改为复选框,您的工作应该会容易得多。

HTML这就是我标记 HTML 的方式,您可以使用 CSS 来隐藏带有display: none.

<tr class="contactrow">
  <td>
    <input type="checkbox" name="checked[421]" />
    Rudy Thompson
  </td>
  <td>Marine CORP</td>
  <td>95939288</td>
  <td>Rudee@mcorp.es</td>
</tr>

jQuery

$(function () {
  $('.contactrow').click(function () {
    var checkbox = $(this).find('input[type=checkbox]');
    checkbox.prop('checked', !checkbox.prop('checked'));
    $(this).toggleClass('contactrow_highlight');
  });  
});
于 2012-11-19T13:27:42.790 回答
0

我对此进行了测试,它对我有用。

$(function () {
    $('.contactrow').click(function () {
        $(this).toggleClass("contactrow_highlight");
        $(this).find("input").each(function(){
            if($(this).attr("name") == "checked"){
                if($(this).val() == "FALSE"){
                    $(this).val("TRUE");
                } else {
                    $(this).val("FALSE");                   
                }
            }
        });
    });
})
于 2012-11-19T13:33:59.800 回答
0

给你:http: //jsfiddle.net/AuYZf/1/

您可以获得单击的行元素的第一个子元素的兄弟姐妹,第三个似乎是所需的元素。然后你可以简单地切换值:

var inputElement = this.firstChild.nextSibling.nextSibling.nextSibling;
inputElement.value = (inputElement.value != "true")

(我使用 != 因为字符串“false”仍然评估为 true)
它甚至不使用 jQuery 循环遍历所有内容。

于 2012-11-19T13:34:47.347 回答