如何添加具有相同类名的表单输入字段

How to add input field of a form with same class name

本文关键字:同类 表单 字段 输入 何添加 添加      更新时间:2023-09-26

我有一个JavaScript问题,我仍然可以找到一个出路。

我有一个动态形成的表,它包含表单字段。

代码:

      var table = document.getElementById("table");
      var row = table.insertRow(-1);
      var cell1 = row.insertCell(-1); 
      var cell2 = row.insertCell(-1);
      var cell3 = row.insertCell(-1);
      var cell4 = row.insertCell(-1);
      var cell5 = row.insertCell(-1);
      cell1.innerHTML = count; //this is index, set above as var count = 1;
      cell2.innerHTML = name; //this is a variale dynamically generated
      cell3.innerHTML = '<input type="text" name="quantity[]" onchange="addAll()" class="quantity" id="quantity" value="1" data-price="'+price+'" />'
      cell4.innerHTML = price;
      cell5.innerHTML = '<a href="#" onclick="deleteRow('+count+')">Delete</a>';

上面的代码会输出如下:

   <input type="text" name="quantity[]" onchange="addAll()" class="quantity" value="1" data-price="4" />
   <input type="text" name="quantity[]" onchange="addAll()" class="quantity" value="34" data-price="5" />
   <input type="text" name="quantity[]" onchange="addAll()" class="quantity" value="12" data-price="8" />

然后我有另一个输入字段,标签TOTAL

  <input name="total" id="total" />

我想在每次onchange()之后循环遍历上面的输入表单并进行计算。

 var total = class with quantity[0] * data-price + class with quantity[1] * data-price //and so on for all the input (multiply the input value by the data-price attribute and add all together).

所以我可以把它放在函数中:

 function addAll() {
    //code that returns the total
    document.GetElementById('total').value = total;
 }

我在看jQuery $("className")。每个(function())都混淆了

如果你想访问每个类,下面的jquery可以做到:

var total=0;
$(".quantity").each(function() {
    total=total+$(this).val();
});

"。"表示"选择类",就像css一样。你不能对id做同样的事情,因为id是唯一的,所以jquery将只返回第一个元素。

您可以使用下面的代码来遍历您的字段:
$('。量")。每个(函数(){//你的计算});

function addAll()
{
   var total = 0;
    $('.quantity).each(function()
    {
         if($(this).attr('name')!='Total')
         {
             var val = $(this).attr('value')
             var dat = $(this).attr('data-price')
             total = total + (val*dat)
         }
     });
     document.GetElementById('total').value = total
 }

我相信这会达到你的要求…虽然它不附属于.on('change')事件。你可能想要自己改变一下这部分。祝你学习jQuery顺利。

使用jQuery .each() !

var value = 0, price = 0;
$('.quantity').each(function () {
    var val = value += Number($(this).val()),
        data = price += $(this).data('price'),
        total = val * data;
    $('#total').val(total);
});

JSFiddle示例-你可能想看一下…

我认为这是完美的代码为您的要求

$('.quantity').change(function(){
     var total = 0;
     $('.quantity').each(function(index,element){
    total += ( $(element).val())*($(element).prop('data-price'));
     });
     $('#total').val(total);
  });