我目前有一个包含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>
答案 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
}
});