Reputation: 134
I dynamically created a table with three columns.
<tr>
<td>1</td>
<td>SegName</td>
<td><input type='text' /></td>
</tr>
I'm trying to write a function that goes through each row and grabs the value in that will be in the textbox.
Javascript:
$("#codeSegmentBody").children().eq(x).children().eq(2).val();
The code brings brings up undefined when I do val(), but if I do html it'll grab the html of the textbox.
How can I get this to bring me the value?
Upvotes: 2
Views: 2822
Reputation: 43084
You are referencing the containing <td>
not the input. Try:
$("#codeSegmentBody").children().eq(x).find(":text").val();
Upvotes: 1
Reputation: 69915
Try this
$("#codeSegmentBody tr").each(function() {
alert($(this).find("input").val());
});
Upvotes: 1
Reputation: 6304
$("#codeSegmentBody tr input[type='text']").each(function(){
alert($(this).val());
})
Upvotes: 1
Reputation: 12566
<table id="test">
<tr>
<td>
<input type="text" value="123">
</td>
</tr>
<tr>
<td>
<input type="text" value="abc">
</td>
</tr>
</table>
<script type="text/javascript">
$(document).ready(function(){
$("#test").find(":input[type=text]").each(function(){
alert( $(this).val() );
});
});
</script>
Here is a fiddle that will get you there:
Upvotes: 3
Reputation: 337580
Assuming #codeSegmentBody
is the name of your table, try this:
$("#codeSegmentBody td input").each(function() {
var inputValue = $(this).val();
alert(inputValue);
});
Upvotes: 1
Reputation: 4245
Not easier
$("table tr td input").val();
?
BTW. You don't have any value in this input anyway.
Upvotes: 0
Reputation: 29424
var str = "";
$("#codeSegmentBody .third-column input").each(function()
{
str += this.value;
});
alert(str);
Upvotes: 0