使HTML表中的所有列可编辑,除了一个

时间:2016-12-01 16:24:20

标签: javascript php html html-table contenteditable

我有一个带有编辑按钮的HTML表格。单击编辑按钮时,它允许该行变为可编辑。现在整行都是可编辑的,但是,我希望MR_ID行不可编辑。我怎样才能做到这一点?我在我的代码中尝试了一些东西,但它似乎没有起作用。

如果我需要提供更多代码,请告诉我,我会这样做。

这是我的if语句的开头,我认为问题应该是:

  $(document).on("click", "#html_master .edit", function () {
  var $this = $(this);
  var tds = $this.closest('tr').find('td').filter(function () {
    return $(this).find('.edit').length === 0;
  });
  if ($this.val() === 'Edit') {
    $this.val('Save');
   if($this.id != '.mr_id'){
        tds.prop('contenteditable', true);
   }
}

表格的HTML / PHP:

<?php
/* Foreach loop that brings in information to populate table */
foreach ($dbh->query($sql) as $rows){
    ?>
    <tr id="<?php echo intval ($rows['MR_ID'])?>">
        <td class="mr_id" id="<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo intval ($rows['MR_ID'])?></td>
        <td class="mr_name" id="mr_name-<?php echo intval ($rows['MR_ID'])?>" name="field" contenteditable="false"><?php echo $rows['MR_Name']?></td>
        <td class="buyer_id" id="buy_id<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['Buyer_ID']?></td>
        <td class="poc_n" id="poc_n-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_N']?></td>     
        <td class="poc_e" id="poc_e-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_E']?></td>
        <td class="poc_p" id="poc_p-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_P']?></td>
        <td><input type="button" class="edit" name="edit" value="Edit">
    </tr>
 <?php
  }
 ?>

2 个答案:

答案 0 :(得分:2)

您可以将其放入初始查找语句中。

var tds = $this.closest('tr').find('td').not('.mr_id').filter(function () {
  return $(this).find('.edit').length === 0;
})

另一个选项,如果编辑单元格总是最后一个,则将其捆绑到not语句中

var tds = $this.closest('tr').find('td').not('.mr_id, :last-child')

答案 1 :(得分:1)

只需将过滤器扩展为不包含mr_id列:

$(document).on("click", "#html_master .edit", function() {
  var $this = $(this);

  var tds = $this.closest('tr').children().filter(function() {
    var $thisTd = $(this);
    return $thisTd.find('.edit').length === 0 && !$thisTd.hasClass('mr_id');
  });

  if ($this.val() === 'Edit') {
    $this.val('Save');
    tds.prop('contenteditable', true);
  }
});