【问题标题】:Changing the TD value during onclick在 onclick 期间更改 TD 值
【发布时间】:2018-06-27 17:22:58
【问题描述】:

下面是我的 HTML:

          <form method="post" >
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
           <table class="table table-condensed1" >
            <tbody>
                <tr>
                <td>Email</td>
                 <td><span><?php echo $row['Admin_Email'];?></span> <input type="text" name="email" size="30" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
                <tr>
                    <td>Name </td>
                 <td><span><?php echo $row['Admin_Name'];?></span> <input type="text" name="name" size="30" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
                <tr>
                    <td>Gender</td>
                 <td><span><?php echo $row['Admin_Gender'];?></span> <input type="text" name="gend" size="10" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
                <tr>
                    <td >Date of Birth</td>
                 <td><span><?php echo $row['Admin_DOB'];?></span> <input type="date" name="dob" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
                <tr>
                    <td >Contact Number</td>
                 <td><span><?php echo $row['Admin_ContactNum'];?></span> <input type="text" name="num" size="15" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
                <tr>
                    <td>Address</td>
                 <td><span><?php echo $row['Admin_Address'];?></span> <input type="text" name="add" size="100" autocomplete="off" class="hidden"></td>
                    <td><a href="#" class="edit">Edit</a></td>
                </tr>
            </tbody>
        </table>
</form>

隐藏class="hidden"文本框的CSS代码:

.hidden {
    display: none;
}

我的jQuery将编辑更改为保存并显示一个输入文本框,然后当用户点击保存时显示一个通知栏:

<script>
$(document).ready(function(){

$(".table").on("click", ".edit", function() {
    var prevTD = $(this).parent().prev();
    var value = prevTD.find("span").hide().text();
    prevTD.find("input").show().val(value);
    $(this).toggleClass("edit save").text("Save");
}).on("click", ".save", function() {
    var prevTD = $(this).parent().prev();
    var value = prevTD.find("input").hide().val();
    prevTD.find("span").show().text(value);
    $(this).toggleClass("edit save").text("Edit");

$("form").submit(function() { $(this).find("input").show(); }); 




    jNotify(
    '<img src="../Images/success.png" height="15px"/> Profile updated!',
    {
      autoHide : true, 
      MinWidth: 150,
      TimeShown : 2500,
      OpacityOverlay : 0 ,
      HorizontalPosition : 'right',
      VerticalPosition: 'bottom'
    })



});


});

</script>

我的 PHP 代码更新我的成员表:

    $email = $_POST["email"];
    $name = $_POST["name"];
    $gend = $_POST["gend"];
    $dob = $_POST["dob"];
    $num  = $_POST["num"];
    $address1 = $_POST["add"];




mysqli_query($conn, "UPDATE admin SET Admin_Email ='$email' , Admin_Name='$name', Admin_Gender='$gend', Admin_DOB='$dob', Admin_ContactNum='$num', Admin_Address='$address1' WHERE Admin_ID=$id");

我无法检索在&lt;input type="text" name="name" size="30" autocomplete="off" class="hidden"&gt; 中输入的文本。如何检索此文本?我想获取文本并在我的 php 中声明我可以在其中执行 $name = $_POST["name"]; 并更新我在数据库中的表。

【问题讨论】:

  • 看看contenteditable属性。
  • 我希望它只有在我点击编辑按钮时才可编辑
  • 欢迎来到 SO。请注意——假设您将自己编写所有代码。我们不会经常在这里分发代码,但我们会为您指明正确的方向。我强烈建议您编辑问题以征求关于方法 的建议,而不是代码。 (我们这样做的主要原因......如果你不自己编写代码,你实际上不会学到任何东西。)
  • 您好,感谢您的建议。我已经编辑了我的帖子。

标签: php jquery css html-table


【解决方案1】:

你可以在 contenteditable 属性的帮助下做这样的事情

$('.table tr>td a').click(function(e) {
  e.preventDefault();
  $(this)
    .closest('tr')
    // get the table row
    .find('td:eq(1)')
    // get second column
    .prop('contenteditable', $(this).text() == 'Edit')
    // setting td as editable
    .focus()
    // focusing the td
    .end().end()
    // back to button
    .text($(this).text() == 'Edit' ? 'Save' : 'Edit');
    // update button text
});
.table-condensed1 {
  width: 100%;
  max-width: 100%;
  margin-bottom: 20px;
}
.table-condensed1 td {
  font-size: 20px;
}
.table-condensed1 td:first-child {
  font-weight: 700;
}
.table-condensed1 td:last-child,
.table-condensed1 td:last-child a {
  color: #0078b0;
}
.table-condensed1 td:last-child,
.table-condensed1 td:last-child a:hover {
  color: #2ba6cb;
  background-color: white;
}
.table-condensed1 > thead > tr > th,
.table-condensed1 > tbody > tr > th,
.table-condensed1 > tfoot > tr > th,
.table-condensed1 > thead > tr > td,
.table-condensed1 > tbody > tr > td,
.table-condensed1 > tfoot > tr > td {
  border-top: 0px solid white;
  border-bottom: 1px solid #efefef;
  border-bottom-width: thin;
  padding: 10px;
}
.table-condensed1 tr:hover {
  background-color: #f5f5f5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table class="table table-condensed1">
  <tbody>
    <tr>
      <td>Email</td>
      <td>
        <?php echo $row[ "Admin_Email"];?>
      </td>
      <td><a href="">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Name</td>
      <td>
        <?php echo $row[ "Admin_Name"];?>
      </td>
      <td><a href="">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Gender</td>
      <td>
        <?php echo $row[ "Admin_Gender"];?>
      </td>
      <td><a href="">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Date of Birth</td>
      <td>
        <?php echo $row[ "Admin_DOB"];?>
      </td>
      <td><a href="">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Contact Number</td>
      <td>
        <?php echo $row[ "Admin_ContactNum"];?>
      </td>
      <td><a href="">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Address</td>
      <td>
        <?php echo $row[ "Admin_Address"];?>
      </td>
      <td><a href="#top">Edit</a>
      </td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 嗨,我在哪里把它放到我的代码中? $('.table tr>td a').click(function(e) { e.preventDefault(); $(this).closest('tr').find('td:eq(1)').prop ('contenteditable', $(this).text() == 'Edit').focus().end().end().text($(this).text() == 'Edit' ? '保存' : '编辑'); });
【解决方案2】:

在 TD 中放置一个包含普通文本和用户可以编辑的输入的跨度。当用户单击编辑按钮时,隐藏跨度,显示输入,并更改按钮的类和文本。当他们点击保存按钮时,反之亦然。

$(".table").on("click", ".edit", function() {
  var prevTD = $(this).parent().prev();
  var value = prevTD.find("span").hide().text();
  prevTD.find("input").show().val(value);
  $(this).toggleClass("edit save").text("Save");
}).on("click", ".save", function() {
  var prevTD = $(this).parent().prev();
  var value = prevTD.find("input").hide().val();
  prevTD.find("span").show().text(value);
  $(this).toggleClass("edit save").text("Edit");
});
// Unhide all the hidden inputs when submitting the form
$("form").submit(function() { 
    $(this).find("input").show(); 
});
.table-condensed1 {
  width: 100%;
  max-width: 100%;
  margin-bottom: 20px;
}
.table-condensed1 td {
  font-size: 20px;
}
.table-condensed1 td:first-child {
  font-weight: 700;
}
.table-condensed1 td:last-child,
.table-condensed1 td:last-child a {
  color: #0078b0;
}
.table-condensed1 td:last-child,
.table-condensed1 td:last-child a:hover {
  color: #2ba6cb;
  background-color: white;
}
.table-condensed1 > thead > tr > th,
.table-condensed1 > tbody > tr > th,
.table-condensed1 > tfoot > tr > th,
.table-condensed1 > thead > tr > td,
.table-condensed1 > tbody > tr > td,
.table-condensed1 > tfoot > tr > td {
  border-top: 0px solid white;
  border-bottom: 1px solid #efefef;
  border-bottom-width: thin;
  padding: 10px;
}
.table-condensed1 tr:hover {
  background-color: #f5f5f5;
}
.hidden {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-condensed1">
  <tbody>
    <tr>
      <td>Email</td>
      <td><span>Admin_Email</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Name</td>
      <td><span>Admin_Name</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Gender</td>
      <td><span>Admin_Gender</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Date of Birth</td>
      <td><span>Admin_DOB</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Contact Number</td>
      <td><span>Admin_ContactNum</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
    <tr>
      <td>Address</td>
      <td><span>Admin_Address</span>
        <input type="text" class="hidden">
      </td>
      <td><a href="#" class="edit">Edit</a>
      </td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 不知道你做错了什么。我刚刚将我的答案转换为可执行的 sn-p,它工作正常。
  • 嗨,我已经成功完成了。但我有另一个基于同一件事的问题。你能进一步帮助我吗?我不能再发布任何问题了。
  • 我该如何接近你?
  • 您可以编辑您的问题,并将更新后的代码添加到问题的末尾。
  • 嗨。你能帮帮我吗?
猜你喜欢
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2021-04-25
相关资源
最近更新 更多