jquery动态表不能正常工作

jk9hmnmh  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(308)

这是我的简单html页面。在这个程序中,当我按enter键创建动态行时,它会创建一个新行。但问题是我想更改每一行的id,比如--search1,search2,search3。
为了检查这个,我在alert中显示id,但是在alert框中只显示第一行id,但是当我检查页面并检查第二行id时,它改变了id。那么我能做什么呢?

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link type="text/css" href="Bootstrap/bootstrap.css" rel="stylesheet"/>
        <title>JSP Page</title>
    </head>
    <body>

        <br><br>
    <center>
        <div class="container-fluid">
        <div class="row">
        <div class="col-lg-8">

        <div class="table-responsive">
        <table class="table-responsive table-bordered">
        <thead>
        <tr>
            <th>No.</th>
            <th>Name</th> 
            <th>Price</th> 
        </tr>   
        </thead>    

        <tbody>
            <tr>
                <td align="center">1</td>
                <td><input type="text" class="inputs searchName" name="pname_1" size="15" id="search1"/></td>    
                <td><input type="text" class="inputs lst" size="15" /></td>    

            </tr>
        </tbody>
        </table>
        </div>
        </div>
        </div>
        </div>
    </center>

        <script type="text/javascript" src="Bootstrap/jquery-3.1.1.min.js"></script>
        <script type="text/javascript" src="Bootstrap/bootstrap.js"></script>

这是用于创建动态行的jquery

$(document).keypress(
    function(event){
     if (event.which == '13') {
        event.preventDefault();
      }
});

var i = $('table tr').length;
var count=0;
$(document).on('keyup', '.lst', function(e) 
{
  var code = (e.keyCode ? e.keyCode : e.which);
  if (code == 13) 
  {
    count = $('table tr').length;     

    html = '<tr>';
    html += '<td align="center">'+ i +'</td>';
    html += '<td><input type="text" class="inputs searchName"  size="15" name="pname_' + i + '" id="search'+i+'" /></td>';
    html += '<td><input type="text" class="inputs lst"  size="15" /></td>';

    html += '</tr>';

    $('table').append(html);
    $(this).focus().select();
    i++;
  }
});

$(document).on('keydown', '.inputs', function(e) {
  var code = (e.keyCode ? e.keyCode : e.which);
  if (code==13) {
    var index = $('.inputs').index(this) + 1;
    $('.inputs').eq(index).focus();
  }
});

      $('.searchName').keyup(function()
      {
          var id=$(this).attr("id");
          alert(id);

      });
unftdfkk

unftdfkk1#

我认为您应该学习jquery是如何工作的。都是关于选择器的。应用于的选择器 id 选择零或一个元素。应用于类的选择器选择更多的元素。您应该阅读常见问题解答:如何使用类或id选择项目?。
读完这篇文章后,我想到了你的代码有什么问题。

o4tp2gmn

o4tp2gmn2#

我认为您需要使用$(document).on而不是$('.searchname').keyup函数
请尝试以下代码

$(document).on('keyup', '.searchName', function() {    
  var id=$(this).attr("id");
  alert(id);    
});

下面是工作的jsfiddle:https://jsfiddle.net/r9hpyabh/

js81xvg6

js81xvg63#

不得不修改你的一些代码,发现了很多错误,但我想我已经把你摆平了。
首先你需要定义你的html变量,所以我添加了 var html; 你的第二个 html var复制了您以前的html,所以您需要用每个新的html将其清空 $(document).on('keyup', '.lst', function(e) { 所以我补充说 html = ''; 第三,你需要改变你的想法 $('.searchName').keyup(function() {$(document).on('keyup', '.searchName', function() { 来解释你的动态内容。
记住,无论何时处理动态内容,都需要使用 $(document).on('event', 'class or id', function() { 能够捕获动态内容。

var i = $('table tr').length;
var count = 0;
var html;
$(document).on('keyup', '.lst', function(e) {
  html = '';
  var code = (e.keyCode ? e.keyCode : e.which);
  if (code == 13) {
    count = $('table tr').length;

    html += '<tr>';
    html += '<td align="center">' + i + '</td>';
    html += '<td><input type="text" class="inputs searchName"  size="15" name="pname_' + i + '" id="search' + i + '" /></td>';
    html += '<td><input type="text" class="inputs lst"  size="15" /></td>';

    html += '</tr>';

    $('tbody').append(html);
    $(this).focus().select();
    i++;
  }
});

$(document).on('keydown', '.inputs', function(e) {
  var code = (e.keyCode ? e.keyCode : e.which);
  if (code == 13) {
    var index = $('.inputs').index(this) + 1;
    $('.inputs').eq(index).focus();
  }
});

$(document).on('keyup', '.searchName', function() {
  var id = $(this).attr("id");
  alert(id);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>JSP Page</title>
</head>

<body>
  <center>
    <div class="container-fluid">
      <div class="row">
        <div class="col-lg-8">

          <div class="table-responsive">
            <table class="table-responsive table-bordered">
              <thead>
                <tr>
                  <th>No.</th>
                  <th>Name</th>
                  <th>Price</th>
                </tr>
              </thead>

              <tbody>
                <tr>
                  <td align="center">1</td>
                  <td><input type="text" class="inputs searchName" name="pname_1" size="15" id="search1" /></td>
                  <td><input type="text" class="inputs lst" size="15" /></td>

                </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
    </div>
  </center>

相关问题