如何使用 Javascript 访问动态表单元素 id

Posted

技术标签:

【中文标题】如何使用 Javascript 访问动态表单元素 id【英文标题】:How to Acess Dynamic Form Elements id Using Javascript 【发布时间】:2017-05-24 18:36:58 【问题描述】:

我正在使用 phpjavascript 创建动态表单元素,我可以使用 PHP 访问动态表单元素值。

但我的要求是在将数据发送到服务器之前,我想计算我个人产品的税收和折扣.. 并显示总价

工作正常:

我可以动态添加表单元素 将动态产品值发布到服务器

问题:

单独计算所有动态产品的税费和折扣 并在将数据发送到服务器之前显示详细信息..

我想显示单个产品的总价

谢谢...

这是我添加动态元素的代码:

<script type="text/javascript">

function addRow(tableID) 
  var table = document.getElementById(tableID);
  var rowCount = table.rows.length;
  if(rowCount < 20)        `enter code here`       `enter code here`             // limit the user from creating fields more than your limits
    var row = table.insertRow(rowCount);
    var colCount = table.rows[0].cells.length;
    for(var i=0; i <colCount; i++) 
      var newcell = row.insertCell(i);
      newcell.innerhtml = table.rows[0].cells[i].innerHTML;
    
  
else
     alert("Maximum Passenger per ticket is 5");         

 

</script>

我的 HTML 表单代码:

<table id="dataTable" class="form" border="0"  border="1">
 <tbody>
  <tr>
  <p>


  <td >
  <label for="BX_birth">Product name</label>
  <select class="form-control" style="width:70%;" id="BX_birth" name="pname[]">
    <option>....</option>
   <?php
                    include_once "connection.php";
                    $qry="SELECT * FROM `item` WHERE `totqty` NOT LIKE '0' ORDER BY `id` DESC";
                    $res=mysqli_query($con,$qry);
                    while ($row=mysqli_fetch_assoc($res)) 
                     $id=$row['id'];
                     $name=$row['name'];


                    ?>

                    <option><?php echo $name; ?></option>
                    <?php
                  
                    ?>
  </select>
  </td>



  <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">Qty</label>
                  <input type="text" class="form-control" name="pqty[]" id="qty" oninput="calculate()"   placeholder="">
                </div>
  </td>
  <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">Rate</label>
                  <input type="text" class="form-control" name="prate[]" id="rate" oninput="calculate()"    placeholder="">
                </div>
  </td>

    </td>
  <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">Discount</label>
                  <input type="text" class="form-control" name="discount[]" id="discount" oninput="calculate()"    placeholder="">
                </div>
  </td>

    </td>
  <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">Sub Total</label>
                  <input type="text" class="form-control" name="subtotal[]" id="subtotal" oninput="calculate()"    placeholder="">
                </div>
  </td>

   <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">VAT(%)</label>
                  <input type="text" class="form-control" name="vat[]" id="vat" oninput="calculate()"   placeholder="">
                </div>
  </td>

   <td >
      <div class="form-group">
                  <label for="exampleInputEmail1">Total</label>
                  <input type="text" class="form-control" name="total[]" id="total" oninput="calculate()"    placeholder="">
                </div>
  </td>






</p>
  </p>
  </tr>

 </tbody>
</table>

获取动态表单值的我的 PHP 代码:

foreach( $pname as $key => $n ) 
  $pn=$pname[$key];
  $pr=$prate[$key];
  $pq=$pqty[$key];


我的表格:

http://techmyntra.co.in/website-designing-and-development-company-vellor.html

http://www.techmyntra.co.in

【问题讨论】:

在计算时用javascript编写onkeyup()函数。将显示结果。 假设您的产品id 是唯一的。所以使&lt;input type="hidden" id="product&lt;?php echo $product['id']?&gt;" value="" /&gt;这种类型的输入可以为每个产品dom元素生成唯一的id。其他的也一样。 【参考方案1】:

在 PHP 中生成表单时

假设你正在使用while循环来生成动态表单

$index = 1;
while(.....)

   $id1 = "MyField_".$index;

   echo "<input type='text' id=$id1 />";

   $id2 = "MyField2_".$index;
   echo "<input type='text' id=$id1 onblur='total($index);' />";

   $idTotal = "MYTotalField_".$index;
   echo "<input type='text' id=$idTotal />";

   $index++;



//--[JS Method]--
function total(index)

  var value1 = $("#MyField_"+index).val();
  var value2 = $("#MyField2_"+index).val();
  .
  .
  var valuen = $("#selectorn").val();


  var total = value1 + value2 + .... + valuen;
  $("#MYTotalField_"+index).val(total);

希望对你有帮助

【讨论】:

假设他有5个产品,如果这些产品是从数据库动态生成的,他如何获得$(selector).val()的值? 是的..它有效,但我只能计算表格上的第一个产品的产品价值..但它不适用于第二个产品..请查看我的表格 您需要为每个输入字段生成唯一的 ID。让我编辑答案以供参考。

以上是关于如何使用 Javascript 访问动态表单元素 id的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Wix 中使用 JavaScript 代码构建动态搜索表单?

如何动态添加带有引导表单元素的 div?

基于 HTML/JavaScript 中的用户选择动态删除表单元素

javascript对象

使用 JavaScript 插入元素时无法接收表单输入数据

常规动态网页爬取