【问题标题】:How to pass value from looped table index and show into an input box如何从循环表索引中传递值并显示到输入框中
【发布时间】:2020-01-06 06:42:18
【问题描述】:

我一直在尝试从循环表索引中获取值。我想在input 字段中显示它。我可以发送一个字符串,但循环索引不显示在字段中

<div class="form-group">
  <label for="PersonName">Person Name</label>
  <input type="text" class="form-control" id="PersonName" name="PersonName" placeholder="Name">
</div>
<div class="form-group">
  <label for="PersonName">Person Age</label>
  <input type="text" class="form-control" id="PersonAge" name="PersonAge" placeholder="Age">
</div>
            $(function () {
            $.ajax({
                type: "get",
                url: "/Person/getTable",
                dataType: "json",
                contentType: "application/json; charset=utf-8",

                success: function (data) {
                    debugger
                    var i = 1;
                    var j = 1;
                    $(data).each(
                               function () {
                                   $('#mytable').append('<tr><td>' + this.Id + '</td><td>' + this.name + '</td><td>' + this.age + '</td><td>' + this.country + '</td><td>' + this.city + '</td><td> <button class="delbtn" id= "' + this.Id + '"> Delete </button> <button class="editbtn" id= "' + this.Id + '"> Edit </button> </td></tr>')
                                   if (i == data.length)
                                   {
                                       $(".delbtn").click(function () {
                                           var del = $(this).attr('id');
                                           $.ajax({
                                               type: "get",
                                               url: "/Person/delRow",
                                               dataType: "json",
                                               contentType: "application/json; charset=utf-8",
                                               data: { del: del },
                                               success: function (data) {
                                                   alert(data)

                                               },
                                               failure: function (errMsg) {
                                                   alert("failure")
                                               }
                                           })
                                       });
                                       $(".editbtn").click(function () {
                                           var del = $(this).attr('id');
                                           $('#PersonName').val(''); // this is where i want to throw it to the input field
                                           $('#PersonAge').val();

                                       });



                                   }
                                   i = i + 1;



                               })
                }
            })
        });

【问题讨论】:

  • 什么是datai 没有在任何地方定义。您还给editdelete 按钮提供了相同的id,这样会导致问题。
  • 在提出问题时,请设身处地为我们着想。你有足够的信息吗?提供的代码中的所有元素都定义了吗?正如上面的评论所提到的,你在代码和问题中有很多问题。请查看并相应更改
  • 我刚刚更新了脚本。抱歉,我没有提供足够的信息
  • 我要做的是从表的某些条目的索引中选择编辑按钮,然后将姓名或年龄传递到输入字段
  • 我希望你明白我想说的。抱歉,我是新手

标签: jquery html ajax asp.net-mvc


【解决方案1】:

您可以使用 Jquery 为输入选择相应的值:

$('#PersonName').val($(this).parent().siblings()[1].innerText); 

在上面的代码中:

  • $(this) 指的是触发事件的item 意思是按钮
  • .parent() 选择按钮的父元素 &lt;td&gt;
  • .sibling() 选择 &lt;td&gt; 元素的所有同级元素,这意味着该行中的所有 &lt;td&gt; 元素
  • [1] 是第二个 &lt;td&gt;(索引从 0 开始),即“名称”列
  • 最后.innerText返回名称列中的文字

您可以查看代码 sn-p 以获得一个工作示例。

注意:我个人会为每一列使用一个数据标签或类,所以如果列顺序改变,代码仍然可以正常工作。 使用数据标签,您的表格行生成代码如下所示:

$('#mytable').append('<tr><td data-Cname="Id" >' + this.Id + '</td><td data-Cname="name">' + this.name + '</td><td data-Cname="age">' + this.age + '</td><td data-Cname="country">' + this.country + '</td><td data-Cname="city">' + this.city + '</td><td> <button class="delbtn" id= "' + this.Id + '"> Delete </button> <button class="editbtn" id= "' + this.Id + '"> Edit </button> </td></tr>')

选择代码如下所示:

$(this).parent().siblings("[data-Cname="name"]).text()

注意 2:有更好的方法来避免列顺序更改问题,但通过它们将超出这个问题的范围。

$(".editbtn").click(function() {
  var del = $(this).attr('id');
  $('#PersonName').val($(this).parent().siblings()[1].innerText); 
  $('#PersonAge').val($(this).parent().siblings()[2].innerText);

});
table {
  border: 1px solid black;
}

table td {
  border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
  <label for="PersonName">Person Name</label>
  <input type="text" class="form-control" id="PersonName" name="PersonName" placeholder="Name">
</div>
<div class="form-group">
  <label for="PersonName">Person Age</label>
  <input type="text" class="form-control" id="PersonAge" name="PersonAge" placeholder="Age">
</div>
<table>
  <th>
    <tr>
      <td>ID</td>
      <td>Name</td>
      <td>Age</td>
      <td>Country</td>
      <td>City</td>
      <td> Buttons</td>
    </tr>
  </th>
  <tbody>
    <tr>
      <td>11</td>
      <td>John</td>
      <td>Doe</td>
      <td>US</td>
      <td>NY</td>
      <td> <button class="delbtn" id="11"> Delete </button> <button class="editbtn" id="11"> Edit </button> </td>
    </tr>
    <tr>
      <td>12</td>
      <td>Jane</td>
      <td>Doe2</td>
      <td>US</td>
      <td>LA</td>
      <td> <button class="delbtn" id="12"> Delete </button> <button class="editbtn" id="12"> Edit </button> </td>
    </tr>
    <tbody>
</table>

【讨论】:

  • 不客气。请考虑选择它帮助的最佳答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2018-02-08
相关资源
最近更新 更多