按钮点击

时间:2017-03-02 09:36:21

标签: javascript jquery html

我有一个包含一行或多行的html表。我的表中有4列,其中一列是复选框。两个按钮有“AddRowAbove”和“AddRowBelow”。选中特定复选框并单击按钮时,应根据按钮名称添加新行。我的代码看起来不确定如何实现结果。

function addNewRowAbove() {

  alert("actioned !!!");
  var rowNumber = document.getElementById("rowIndex").value;
  var rowNumberNew = parseInt(rowNumber) - 1;
  alert(rowNumber + " - " + rowNumberNew);
  var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
  newRow.html('<td><input type="checkbox" name="radio1" id="radio' + rowNumberNew + '"></input><input type="hidden" id="rowIndex' + rowNumberNew + '" value="' + rowNumberNew + '"/></td><td><input type="text" name="empid" id="empid' + rowNumberNew + '"></input></td><td><input type="text" name="empfname" id="empfname' + rowNumberNew + '"></input></td><td><input type="text" name="emplname" id="emplname' + rowNumberNew + '"></input></td>');
  $('#maintable tbody').append(newRow);
}

function addNewRowBelow() {

  alert("actioned !!!");
  var rowNumber = document.getElementById("rowIndex").value;
  var rowNumberNew = parseInt(rowNumber) + 1;
  alert(rowNumber + " - " + rowNumberNew);
  var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
  newRow.html('<td><input type="checkbox" name="radio1" id="radio' + rowNumberNew + '"></input><input type="hidden" id="rowIndex' + rowNumberNew + '" value="' + rowNumberNew + '"/></td><td><input type="text" name="empid" id="empid' + rowNumberNew + '"></input></td><td><input type="text" name="empfname" id="empfname' + rowNumberNew + '"></input></td><td><input type="text" name="emplname" id="emplname' + rowNumberNew + '"></input></td>');
  $('#maintable tbody').append(newRow);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <table id="maintable" width="50%" cellpadding="0" cellspacing="0" border="#729111 1px solid">
    <tr>
      <th align="center">Select</th>
      <th align="center">Employee ID</th>
      <th align="center">First Name</th>
      <th align="center">Last Name</th>
    </tr>
    <tr>
      <td><input type="checkbox" name="radio" id="radio"></input><input type="hidden" id="rowIndex" value="1" /></td>
      <td><input type="text" name="empid"></input>
      </td>
      <td><input type="text" name="empfname"></input>
      </td>
      <td><input type="text" name="emplname"></input>
      </td>
    </tr>
    <tr>
      <td><input type="checkbox" name="radio1" id="radio1"></input><input type="hidden" id="rowIndex" value="2" /></td>
      <td><input type="text" name="empid1"></input>
      </td>
      <td><input type="text" name="empfname1"></input>
      </td>
      <td><input type="text" name="emplname1"></input>
      </td>
    </tr>
    <tr>
      <td></td>
      <td> <input type="submit" name="AddRowAbove" value="AddRowAbove" onclick="addNewRowAbove()"></td>
      <td> <input type="submit" name="AddRowBelow" value="AddRowBelow" onclick="addNewRowBelow()"></td>
      <td></td>
    </tr>
  </table>
</form>

2 个答案:

答案 0 :(得分:3)

我在两个函数中添加var selectedRow = $( "input:checked" ).parent().parent();以查找checked元素的父行,然后根据点击的按钮使用$(newRow).insertBefore(selectedRow);$(newRow).insertAfter(selectedRow);

希望这有帮助。

<强>更新

响应于请求即使在动态添加行之后仍然按顺序保存行的id的注释,我添加了SortRowIDs()函数,该函数在addNewRowAbove()和{{}}的末尾调用{1}}。

此函数抓取addNewRowBelow()中的所有<input type="checkbox"/>标记,然后使用jQuery的<table id="maintable"></table>方法迭代它们。然后,根据表中的顺序为每个复选框的父行分配一个Id。我还在代码中添加了一些注释,以便更容易理解。

.each()

答案 1 :(得分:1)

您可以使用insertBefore在按钮上方添加新行(将id="button"添加到行内容按钮)。尝试使用以下解决方案:

&#13;
&#13;
function addNewRowAbove(){

    alert("actioned !!!");
   var rowNumber=document.getElementById("rowIndex").value;
    var rowNumberNew = parseInt(rowNumber)- 1 ;
    alert(rowNumber+" - "+rowNumberNew);
   var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
    newRow.html('<td><input type="checkbox" name="radio1" id="radio'+rowNumberNew+'"></input><input type="hidden" id="rowIndex'+rowNumberNew+'" value="'+rowNumberNew+'"/></td><td><input type="text" name="empid" id="empid'+rowNumberNew+'"></input></td><td><input type="text" name="empfname" id="empfname'+rowNumberNew+'"></input></td><td><input type="text" name="emplname" id="emplname'+rowNumberNew+'"></input></td>');
    newRow.insertBefore('#button');
}

function addNewRowBelow(){

    alert("actioned !!!");
   var rowNumber=document.getElementById("rowIndex").value;
    var rowNumberNew = parseInt(rowNumber) + 1 ;
    alert(rowNumber+" - "+rowNumberNew);
   var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
    newRow.html('<td><input type="checkbox" name="radio1" id="radio'+rowNumberNew+'"></input><input type="hidden" id="rowIndex'+rowNumberNew+'" value="'+rowNumberNew+'"/></td><td><input type="text" name="empid" id="empid'+rowNumberNew+'"></input></td><td><input type="text" name="empfname" id="empfname'+rowNumberNew+'"></input></td><td><input type="text" name="emplname" id="emplname'+rowNumberNew+'"></input></td>');
        $('#maintable tbody').append(newRow);
}
&#13;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<form>
 <table id="maintable" width="50%" cellpadding="0" cellspacing="0"  border="#729111 1px solid">
<tr>
                <th align="center">Select</th>
                <th align="center">Employee ID</th>
                <th align="center">First Name</th>
                <th align="center">Last Name</th>
            </tr>
            <tr><td><input type="checkbox" name="radio" id="radio"></input><input type="hidden" id="rowIndex" value="1"/></td>
            <td><input type="text" name="empid"></input></td>
            <td><input type="text" name="empfname"></input></td>
            <td><input type="text" name="emplname"></input></td>
            </tr>
             <tr><td><input type="checkbox" name="radio1" id="radio1"></input><input type="hidden" id="rowIndex" value="2"/></td>
            <td><input type="text" name="empid1"></input></td>
            <td><input type="text" name="empfname1"></input></td>
            <td><input type="text" name="emplname1"></input></td>
            </tr>
            <tr id="button"><td></td><td> <input type="submit" name="AddRowAbove" value="AddRowAbove" onclick="addNewRowAbove()"></td><td> <input type="submit" name="AddRowBelow" value="AddRowBelow" onclick="addNewRowBelow()"></td><td></td></tr>
       </table>
  </form>     
</body>

</html>
&#13;
&#13;
&#13;

相关问题