i am in mobile app and i want to fill up an array with values from checkboxes.
my code is
if (row.flatdescription == flatdescription) {
if (row.receiptno == 0){
items.push('<input type="checkbox" name="code_'+ i +'" id="code_'+ i +'" value="' + row.amount + '" previous="' + row.pastpayments + '" barcode="' + row.barcode + '" todayp="' + row.todaypayments + '"/><label for="code_'+ i +'">' + row.period +'..........'+ row.amount+'</label></br>');
}
allbarcode[i] = row.barcode;
previouspayments1 = previouspayments1 + row.pastpayments;
previouspayments = previouspayments1.toFixed(2);
sofeilon1 = sofeilon1 + row.amount;
sofeilon = sofeilon1.toFixed(2);
total1 = total1 + row.amount - row.pastpayments;
total = total1.toFixed(2);
}
and my array code
function barcodeTotal() {
barcode = [];
barcodeamount = [];
barcodeprevious = [];
$("input:checked").each(function(i) {
barcode[i] = $(this).attr("barcode");
barcodeamount[i] = $(this).attr("value");
barcodeprevious[i] = $(this).attr("previous");
});
}
my goal is to fill barcode array like this
barcode [barcode: barcode, amount: value, previous: previous, ....
i will appreciate your answers
You can transform your checked input fields into an array easily:
var checkedInputs = $("input:checked") // this contains the raw HTML-Elements
Now, depending on the desired result you may either harvest the values separately
var barcodes = checkedInputs.map(function() { return $(this).attr('barcode') })
var amounts = checkedInputs.map(function() { return $(this).attr('amount') })
var previouss = checkedInputs.map(function() { return $(this).attr('previous') })
or, what might be even better, as objects just like twilson suggested
var results = checkedInputs.map(function() {
return {
barcode: $(this).attr('barcode'),
amount: $(this).attr('amount'),
previous: $(this).attr('previous')
}
})
In this case you want the this
to be taken from inside of the function
call,
as it refers to the object, you matched with the $('input:checked')
call.
If you store var self = this
as twilson suggested, you would not receive the actual values of the input box, but no values, as the this
of the calling context is most likely not an HTMLElement
at all.