当在html表最后一行中按Enter键时,javascript插入与第一行相同的新行

标签 javascript jquery html

我想在用户按下键盘上的回车键时在 html 表中插入新行。一开始我已经在创建表时添加了第一个 tr。在此 tr 中,首先 td 包含 html 下拉列表($select_chooseitem),其中包含来自数据库的数据。第二列是文本框。我想使用 javascript 获取第一个 tr 元素集并基于它创建新行。 tr 元素集就像:

<tr>
 <td>first col</td>
 <td>second col</td>
</tr>

我不想声明新的 tr 元素集。但是,想要从表中检索第一个 tr 元素集。这可能吗?

$row_html           ='<tr>
                            <td>'.$select_chooseitem.'</td>
                            <td><input type="text" name="order"></td>
                    </tr>';

$html_complete='<!DOCTYPE html>
                    <html lang="en">
                        <head>
                            <script>
                                $(function () {
                                    // Change the selector if needed
                                    var $table = $(".mt-table-edit");

                                    //addNewRow();


                                    function addNewRow() {    
                                        //get row template. We must use html() for new instance other event handler will get attached to last row
                                       //var $tr = $("<tr><td><input/></td><td><input/></td><td><input/></td><td><input/></td></tr>");        
                                         var $tr = $("<tr><td><input/></td><td><input/></td></tr>");        

                                        $tr.find("td").eq($tr.find("td").length - 1).keyup(function (e) {
                                            if (event.keyCode === 13) {
                                                addNewRow();
                                            }
                                        });

                                        // add template after the last row
                                        $table.find("tbody:last-child").append($tr);       

                                        // focus on firt input of newly added row
                                        $tr.find("td:first input").focus();
                                    }
                                });
                            </script>               
                        </head>
                        <body>
                            <table  class="mt-table-edit">
                                '.$row_html.'
                            </table>


                        </body>

                    </html>';
                    echo $html_complete;
//echo $query_tbltemplateitems;

由于第一个不起作用,我尝试的其他方法是在 javascript 中获取 $select_chooseitem 以创建 tr 元素集。我尝试通过 addNewRow('.$select_chooseitem.'); 在 js 中访问 php 变量($select_chooseitem),但没有用。如何从 js 访问 php 变量值的正确方法?

 <script>
        $(function () {
            var $table = $(".mt-table-edit");
            var $row = $(".mt-table-edit").children("tr:first");
            addNewRow('.$select_chooseitem.');

            function addNewRow(var) 
            {    
              //get row template. We must use html() for new instance other event handler will get attached to last row
              //var $tr = $("<tr><td><input/></td><td><input/></td><td><input/></td><td><input/></td></tr>");        
               var $tr = $("<tr><td>var</td><td><input/></td></tr>");        
               $tr.find("td").eq($tr.find("td").length - 1).keyup(function (e) {
                if (event.keyCode === 13) 
                {
                  addNewRow(var);
                }
               });
            $table.find("tbody:last-child").append($tr);       
            $tr.find("td:first input").focus();
            }

        });
    </script>               

我尝试在 js 中声明变量并尝试在 html 头部的 js 中访问。也不成功。 示例:

<?php
 $select_chooseitem='<select>'.$option_list.'</select>';
?>
 <script>
  var select_chooseitem=<?php echo $select_chooseitem;?>;
 </script>

提前致谢。

最佳答案

请尝试下面的代码片段。

$(document).on( 'keyup', '.name', function(){
  
  if (event.which == 13 && $(this).closest("tr").is(":last-child")) {
      var $tblbody = $('#mytable').find("tbody"),
      $tbltrlast = $tblbody.find("tr:last"),
      $trnew = $tbltrlast.clone();

      $tbltrlast.after($trnew);
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id='mytable'>
<tbody>
<tr>
<td><input type='text' name='name' class='name' value='John Doe'></td>
</tr>
</tbody>
</table>

关于当在html表最后一行中按Enter键时,javascript插入与第一行相同的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064485/

相关文章:

javascript - 在代码中设置输入文本的值

javascript - HTML5动态创建文本框数组并设置文本框的文本

javascript - $.slideToggle() & $.hover() 动画队列问题

javascript - ParserError : Syntax Error at line: 1, 第 23 列

javascript - 拖动元素时检测悬停/鼠标悬停/鼠标输入

jquery - Chart.js - 悬停后回调

javascript - 滚动到特定的 div

javascript - 剑道分离器 : How to change "collapsible: false" property of splitter to "collapsible: true" on click of button

javascript - 在 Canvas 中移动圆圈

javascript - Backbonejs 下划线节流功能未触发