最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Dynamically Add Rows In HTML Table Using JavaScript and getting textbox value of each text box by submitting a button - St

programmeradmin0浏览0评论

I have a table where I can dynamically add rows. I want to get the data in each row to a php array when I submit the save button . Can please somebody help me on this. I'm new to java-script and know very little about it. Thank you!

<HTML>
<HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">
        function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            var element1 = document.createElement("input");
            element1.type = "checkbox";
            element1.name="chkbox[]";
            cell1.appendChild(element1);

            var cell2 = row.insertCell(1);
            cell2.innerHTML = rowCount + 1;

            var cell3 = row.insertCell(2);
            var element2 = document.createElement("input");
            element2.type = "text";
            element2.name = "txtbox[]";
            cell3.appendChild(element2);


        }

        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }


            }
            }catch(e) {
                alert(e);
            }
        }

    </SCRIPT>
</HEAD>
<BODY>

    <INPUT type="button" value="Add Row" onClick="addRow('dataTable')" />

    <INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" />
 <form action="" method="post">
 <?php $i= 1; ?>
    <TABLE id="dataTable" width="350px" border="1">
        <TR>
            <TD><INPUT type="checkbox" name="chk"/></TD>
            <TD> 1 </TD>
            <TD> <INPUT type="text" name="harsh"/> </TD>
        </TR>
    </TABLE>
    <input name="saveNewSales" type="submit" value="Save" id="button2" style="text-align:center"/>
 </form>
 <?php

foreach($_POST as $name => $content) { // Most people refer to $key => $value
   echo "The HTML name: $name <br>";
   echo "The content of it: $content <br>";
}
?>

</BODY>
</HTML>

I have a table where I can dynamically add rows. I want to get the data in each row to a php array when I submit the save button . Can please somebody help me on this. I'm new to java-script and know very little about it. Thank you!

<HTML>
<HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">
        function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            var element1 = document.createElement("input");
            element1.type = "checkbox";
            element1.name="chkbox[]";
            cell1.appendChild(element1);

            var cell2 = row.insertCell(1);
            cell2.innerHTML = rowCount + 1;

            var cell3 = row.insertCell(2);
            var element2 = document.createElement("input");
            element2.type = "text";
            element2.name = "txtbox[]";
            cell3.appendChild(element2);


        }

        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }


            }
            }catch(e) {
                alert(e);
            }
        }

    </SCRIPT>
</HEAD>
<BODY>

    <INPUT type="button" value="Add Row" onClick="addRow('dataTable')" />

    <INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" />
 <form action="" method="post">
 <?php $i= 1; ?>
    <TABLE id="dataTable" width="350px" border="1">
        <TR>
            <TD><INPUT type="checkbox" name="chk"/></TD>
            <TD> 1 </TD>
            <TD> <INPUT type="text" name="harsh"/> </TD>
        </TR>
    </TABLE>
    <input name="saveNewSales" type="submit" value="Save" id="button2" style="text-align:center"/>
 </form>
 <?php

foreach($_POST as $name => $content) { // Most people refer to $key => $value
   echo "The HTML name: $name <br>";
   echo "The content of it: $content <br>";
}
?>

</BODY>
</HTML>
Share Improve this question edited Aug 6, 2013 at 6:34 harshanii asked Aug 6, 2013 at 6:03 harshaniiharshanii 631 gold badge3 silver badges9 bronze badges 3
  • All the inputs with name attribute (checked checkboxes and fields) will be passed to the $_POST array in PHP, so you basically have them in one array – Ivan Yonkov Commented Aug 6, 2013 at 6:05
  • You should make yourself acquainted with jQuery. It is in mho a brilliant JS library which makes many things in JS generally a lot easier if not at all possible. I know, it is always extra work to learn another 'language' but it is definitely worth it. Using jQuery you will find several elegant ways to do your project. – Carsten Massmann Commented Aug 6, 2013 at 6:11
  • I changed the code as you said.and it gives only the values of two rows. And is there a way to identify whether its a textbox or not. – harshanii Commented Aug 6, 2013 at 6:33
Add a ment  | 

2 Answers 2

Reset to default 3

Your code is right, just little change over there

<TR>
  <TD><INPUT type="checkbox" name="chk"/></TD>
  <TD> 1 </TD>
  <TD> <INPUT type="text" name="<?php echo $i; ?>"/> </TD>
</TR>

replace with this code

<TR>
  <TD><INPUT type="checkbox" name="chkbox[]"/></TD>
  <TD> 1 </TD>
  <TD> <INPUT type="text" name="txtbox[]"/> </TD>
</TR>

and your work finish

var rows=getElementsByTagName("tr");
var noOfRows=rows.length;

for(int i=0;i<noOfRows;i++){

   var html=rows[i].innerhtml; /*a single row's inner html say (<td>apple</td><td>25</td>)*/
   var td=html.match(/(?!<td>)([\s*\w*]*)[^<\/td>]/g);     
   /**
         td[0] is 'apple', td[1] is '25'
   **/  

}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论