Reputation: 5206
I need to keep the values of each input in an js object. This is my html code :
<div class="produs_varianta">
<input type="text" class="product_name" value="Product One">
<input type="text" class="product_code" value="Code One">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Two">
<input type="text" class="product_code" value="Code Two">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Three">
<input type="text" class="product_code" value="Code Three">
</div>
My .js code :
var variante = $('.produs_varianta');
var produs_varianta = [];
variante.each(function(index){
produs_varianta.push(
{
'produs' : 'the value of product_name',
'cod' : 'the value of product_code
}
);
});
** I tried using $(this).children('.product_name').val() but i've got undefined ! **
Upvotes: 2
Views: 96
Reputation: 470
$(document).ready(function () {
var variante = $('.produs_varianta');
var produs_varianta = [];
variante.each(function (index) {
produs_varianta.push(
{
'produs': $(this).find('.product_name').val(),
'cod': $(this).find('.product_code').val()
}
);
});
// NOW READ THE PRODUCTS AND ITS CODES.
$.each(produs_varianta, function (key) {
alert(produs_varianta[key].produs + ': ' + produs_varianta[key].cod);
});
});
Upvotes: 1
Reputation: 27041
Use .find()
as in $(this).find(".class").val()
var variante = $('.produs_varianta');
var produs_varianta = [];
variante.each( function() {
produs_varianta.push({
'produs': $(this).find(".product_name").val(),
'cod': $(this).find(".product_code").val()
});
});
console.log(produs_varianta)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product One">
<input type="text" class="product_code" value="Code One">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Two">
<input type="text" class="product_code" value="Code Two">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Three">
<input type="text" class="product_code" value="Code Three">
</div>
Upvotes: 3
Reputation: 30739
You need to add a jquery function for this. Your HTML is
<div class="produs_varianta">
<input type="text" class="product_name" value="Product One">
<input type="text" class="product_code" value="Code One">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Two">
<input type="text" class="product_code" value="Code Two">
</div>
<div class="produs_varianta">
<input type="text" class="product_name" value="Product Three">
<input type="text" class="product_code" value="Code Three">
</div>
And the JQuery will be this
var result = [];
$('.produs_varianta').each(function( ) {
var elem = $(this);
var obj = {
'product_name': elem.find('.product_name').val(),
'product_code' : elem.find('.product_code').val()
};
result.push(obj);
});
console.log(result);
Here is the attached link of JSFIDDLE
Upvotes: 1