我在移动应用程序中,我想填充一个包含复选框值的数组。
我的代码是
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);
}
和我的数组代码
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");
});
}
我的目标是像这样填写条形码数组
barcode [barcode: barcode, amount: value, previous: previous, ....
我将非常感谢您的回答
答案 0 :(得分:4)
您可以轻松地将已检查的输入字段转换为数组:
var checkedInputs = $("input:checked") // this contains the raw HTML-Elements
现在,根据所需的结果,您可以单独收获值
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') })
或者,甚至可能更好,就像twilson建议的对象一样
var results = checkedInputs.map(function() {
return {
barcode: $(this).attr('barcode'),
amount: $(this).attr('amount'),
previous: $(this).attr('previous')
}
})
在这种情况下,您希望从this
来电中取出function
,
当它引用该对象时,您与$('input:checked')
调用匹配。
如果您将var self = this
存储为twilson建议,则不会收到输入框的实际值,但没有值,因为调用上下文的this
很可能不是HTMLElement
at所有
答案 1 :(得分:1)
最好使用一组对象,而不仅仅是一个数组。
var self = this; // Important because 'this' may change in scope.
var barcodes = []
$("input:checked").each(function(index, item) {
barcodes.push({
barcode: $(self).attr("barcode"),
amount: $(self).attr("value"),
previous: $(self).attr("previous")
});
});
然后你会得到一个像这样的数组:
[
{ barcode: "5049383", amount: "4", previous: "17263742" },
{ barcode: "5049389", amount: "1", previous: "1726376" }
]
var
关键字放在函数内部,否则它们将是全局的。var self = this;
通常是一种很好的做法,因为this
的范围可能会根据您的执行点而发生很大变化,通常会成为主要的jQuery对象。 self
会将指针返回到您希望与之交谈的内容。答案 2 :(得分:0)
这会对你有所帮助
var arrBarCodeDet = new Array();
var objCheckedElem = $("input:checked");
$.map(objCheckedElem,function(elem,index){
/**
Result As Object
arrBarCodeDet[index] = [{'barcode':$(elem).attr("barcode")},{'barcodevalue':$(elem).attr("barcodevalue")}];
*/
//Result As Arrray
arrBarCodeDet[index] = new Array();
arrBarCodeDet[index]['barcode'] = $(elem).attr("barcode");
arrBarCodeDet[index]['barcodevalue'] = $(elem).attr("barcodevalue");
})
});
<input type="checkbox" name="check1" value="1" checked="checked" barcode="12233" barcodevalue="12" />Check Box 1 <br />
<input type="checkbox" name="check2" value="1" checked="checked" barcode="45451" barcodevalue="24" />Check Box 2 <br />
<input type="checkbox" name="check3" value="1" checked="checked" barcode="34343" barcodevalue="36" />Check Box 3 <br />
<input type="checkbox" name="check4" value="1" barcode="32333" value="48" />Check Box <br />
结果将是 arrBarCodeDet [ 阵列[0] 条形码:“12233” 条形码:“12” 长度:0 proto :数组[0] , 阵列[0] 条形码:“45451” 条形码:“24” 长度:0 proto :数组[0] , 阵列[0] 条形码:“34343” 条形码:“36” 长度:0 proto :数组[0] ]