在数据表的隐藏列中获取input [type = hidden]的值

时间:2015-03-07 16:07:35

标签: javascript jquery codeigniter datatable

我的这个表有2列,personIDName。第一列是隐藏的。我还添加了一个隐藏的输入字段。我这样做是因为无论何时刷新页面,我都能在瞬间看到它的价值。

我实际上使用了数据表。如果我点击桌面主体,我想显示personID。我的问题是我无法显示personID。

<div class="row table-responsive">
  <table class="table table-bordered table-striped table-condensed" id="table_data"> 
    <thead class="header">
      <tr class="well">
        <th></th>
        <th>Person Name</th>
      </tr>
    </thead>

    <tbody>
      <?php if($result != NULL){?>
        <?php foreach($result as $row){ ?>
            <tr>
            <td> <input type="hidden" name="personID" id="personID" value="<?php  echo $row->personID;?>" />
            </td>
            <td ><?php echo $row->lname.", ".$row->fname." ".$row->mname;?></td>

        <?php }}?>

    </tbody>
  </table><!-- END Table-->
</div><!-- END table-responsive-->

javascript代码:

var table = $('#table_data').DataTable({
    "bLengthChange": false,
    "columnDefs": [
        {
            "targets": [ 0],
            "visible": false,
            "searchable": false
        }
    ]

});
 $('#table_data tbody').on( 'click', 'tr', function () {
    if ( $(this).hasClass('active') ) {
        $(this).removeClass('active');
    }
    else {
        $(this).addClass('active');
        var d = $('input[type=hidden]', $(this).find("td:first")).val();
         alert(d);


    }
} );

我已经尝试了以下内容:

我在这里得到了一个未定义的结果:

var d =  $(this).parent('td').find('input[type="hidden"]').val();
var d = $('input[type=hidden]', $(this).find("td:first")).val();

警报没有显示在这里:

var d=document.getElementById('personID').value;

当我尝试这个时,它给了我这个结果<input name="personID" id="personID" value="19" type="hidden">

 var d= $(this).parents('tr').find('input[type="hidden"]').val();

请帮帮我..

1 个答案:

答案 0 :(得分:3)

确切地看到这里出了什么问题有点困难。有时你指的是名为&#34; personID&#34;的隐藏输入。在你的代码片段中,有时候&#34; guestID&#34;。如果您的实际代码中存在这种差异,这显然会导致问题。

如果确保呈现的HTML符合您的预期(使用personID作为隐藏输入的名称),则以下内容应该有效:

$('#table_data tbody').on('click', 'tr', function () {

    var $tr = $(this);

    if ($tr.hasClass('active')) {

        $tr.removeClass('active');

    } else {

        $tr.addClass('active');

        // Use the input's name to find it within the <tr>
        var d = $tr.find('input[name=personID]').val();

        alert(d);
    }
});

示例:JSFiddle

然后,将整个表列仅用于隐藏输入似乎有点过分。您可以简单地将隐藏的输入放在与人名相同的列中 - 或者甚至将其作为data attribute存储在表行本身上。此外,在您的PHP循环中,您将为所有隐藏的输入提供相同的#34; personID&#34;技术上不正确的ID - HTML文档中的所有ID值都应该是唯一的。