捕获AJAX发送的克隆行值

时间:2015-07-28 01:56:18

标签: javascript php jquery mysql ajax

我目前有一个包含4列和一行的简单表。用户可以填写4列的数据并提交我的javascript函数根据id查找值。简单。用户还可以选择添加另一行并输入更多数据。克隆行时,它会维护父行的ID。

我遇到麻烦的地方是如何捕获克隆行的值。

我目前正在使用它来捕获其中一个输入元素的值:

var fineexpense= document.getElementById('fineexpense').value;

当我有多行时,它只抓取第一个值。

将具有该ID的所有值转换为数组然后通过AJAX发送的最佳方法是什么?

我真的很难用Javascript来解决这个问题。任何帮助都会很棒!谢谢。

这是我的克隆功能:(需要编辑以更改ID)

function add() {

  var row = document.getElementById("finerow"); // find row to copy
  var table = document.getElementById("adddate"); // find table to append to
  var clone = row.cloneNode(true); // copy children too
 // clone.id = "newID"; // change id or other attributes/contents
  table.appendChild(clone); // add new row to end of table
}

这是我的HTML示例:

<table  class="tablesorter2"> 
    <tbody> 
        <tr id='finerow'> 
            <td>Expense:
            </td>

            <td>
              <select id="fineexpense" name='fineexpense'>
              <option value='Mortage/Rent'>Mortage/Rent
              </option>
              <option value='Auto'>Auto
              </option>

1 个答案:

答案 0 :(得分:0)

ID应该是唯一的。如果你有多个相同的元素(克隆元素),那么使用类定义更适合这个。

  

当我有多行时,它只会抓取第一个值。

是的,这是因为ID只捕获找到的第一个元素。在这里,我为您提供解决方案,假设您有多个元素,如下所示:

<input type="text" name="myName" class="sameElement" value="a">
<input type="text" name="myName" class="sameElement" value="b">
<input type="text" name="myName" class="sameElement" value="c">

因此,我们不使用id,而是使用class。然后你可以使用.each捕获这些元素的所有值并存储在数组变量中,如下所示:

var allValue = [];

$('.sameElement').each(function(){
    allValue.push( $(this).val() ); //output <-- ['a','b','c']
});

或者您可以使用javascript对象,因为它们具有键和对以便于理解。这只是一个如何玩多元素的例子。

好吧,如果你想通过ajax发送这个值,这里有一个简单的例子:

 $.ajax({
    type : 'POST',
    url  : 'url_for_processing',
    data : {
      myVar : allValue //<-- we passed an array value
    },
    success : function(data) {
      // do whatever you want
    }
 });