jQuery jquery循环遍历表行和单元格,检查checkob的地方,连接
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16171300/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jquery to loop through table rows and cells, where checkob is checked, concatenate
提问by Smudger
I have a table with multiple rows. there are several columns in the table with checkboxes. I need to loop through each of the checkboxes, where it is checked concatenate/join the input from that particular cell to other inputs from the same row.
我有一个多行的表。表格中有几列带有复选框。我需要遍历每个复选框,在那里选中它 将来自该特定单元格的输入连接/连接到来自同一行的其他输入。
you can see a fiddle here: http://jsfiddle.net/QS56z/10/
你可以在这里看到一个小提琴:http: //jsfiddle.net/QS56z/10/
How can I, in addition to looping through the row, loop through each <td>
once I have this <td>
how can I look for an input whose name starts with x
in that td. once found concatenate / join the input from that to the inputs in the row.
除了循环遍历该行之外,<td>
我<td>
如何才能循环遍历每个我如何查找名称以x
该 td开头的输入。一旦找到连接/连接输入到行中的输入。
I hope that makes sense.
我希望这是有道理的。
essentially: I want to join the (family) to the (size) to the (grade) where family and grade are on the same row, and there are several sizes on each row. each result must be written to the TD currently being processed.
本质上:我想将(家庭)加入(大小)到(等级),其中家庭和等级在同一行,每行有几种尺寸。每个结果都必须写入当前正在处理的 TD。
I have got up to this point but have got stuck:
我已经到了这一点,但被卡住了:
function createcodes(){
alert('running');
//run through each row
$('.authors-list tr').each(function(){
//processing this row
//how to process each cell(table td) where there is checkbox
$($(this).find('input[name^="line"]').val(
$('$(this).find('input[name^="family"]'').val() + ' ' + // common input(family) on row, use for all table cells(td)
$('#$(this).find('input[name^="size"]'').val() + ', ' + // this cells input called size, unique to this cell only
$('#$(this).find('input[name^="grade"]'').val() // common input(grade) on row, use for all table cells(td)
);
// end of cell row processing
});
//end of rows processing
}
Thanks as always.
一如既往的感谢。
my html is:
我的 html 是:
<table class="authors-list" border=1 id="ordertable">
<tr>
<td ><input type="text" id="product1" name="product1" class="rounded" value="38114CR"></td>
<td ><input type="text" size='5' id="qty1" name="qty1" class="rounded" value="10"/></td>
<td class="tdcheckbox">
<input type="checkbox" id="h09_1" name="h09_1" checked class="rounded"/>
<input type="text" id="line_1_09" name="line_1_09" >
<input type="text" id="size_1_09" name="size_1_09" value="09">
</td>
<td class="tdcheckbox">
<input type="checkbox" id="h12_1" name="h12_1" class="rounded"/>
<input type="text" id="line_1_12" name="line_1_12" value="">
<input type="text" id="size_1_12" name="size_1_12" value="12">
</td>
<td class="tdcheckbox">
<input type="checkbox" id="h15_1" name="h15_1" checked class="rounded"/>
<input type="text" id="line_1_15" name="line_1_15" >
<input type="text" id="size_1_15" name="size_1_15" value="15">
</td>
<td><input type="text" name="cubespercheck_1" id="cubespercheck_1" value="0" size=5></td>
<td><input type="text" name="skufamily_1" id="skufamily_1" value="38114"></td>
<td><input type="text" name="skugrade_1" id="skugrade_1" value="cr"></td>
</tr>
</table>
<input type="button" id="continue" value="continue">
keep in mind there are multiple rows. Thanks.
请记住有多行。谢谢。
回答by Terry Young
UPDATED
更新
I've updated your demo: http://jsfiddle.net/terryyounghk/QS56z/18/
我已经更新了你的演示:http: //jsfiddle.net/terryyounghk/QS56z/18/
Also, I've changed two ^=
to *=
. See http://api.jquery.com/category/selectors/
另外,我已经将两个更改^=
为*=
. 见http://api.jquery.com/category/selectors/
And note the :checked
selector. See http://api.jquery.com/checked-selector/
并注意:checked
选择器。见http://api.jquery.com/checked-selector/
function createcodes() {
//run through each row
$('.authors-list tr').each(function (i, row) {
// reference all the stuff you need first
var $row = $(row),
$family = $row.find('input[name*="family"]'),
$grade = $row.find('input[name*="grade"]'),
$checkedBoxes = $row.find('input:checked');
$checkedBoxes.each(function (i, checkbox) {
// assuming you layout the elements this way,
// we'll take advantage of .next()
var $checkbox = $(checkbox),
$line = $checkbox.next(),
$size = $line.next();
$line.val(
$family.val() + ' ' + $size.val() + ', ' + $grade.val()
);
});
});
}
回答by pala?н
Try this:
尝试这个:
function createcodes() {
$('.authors-list tr').each(function () {
//processing this row
//how to process each cell(table td) where there is checkbox
$(this).find('td input:checked').each(function () {
// it is checked, your code here...
});
});
}