jquery function executed more than once

I am in mobile app. I have a function that create a dynamic checkbox (getItem1) and inside this function I call another one that update sqlite . function getItem1(flatname, flatdescription) { $(document).ready(function(){ $('#Code').empty(); $('#displayflat article3').empty(); $('#displayflat article1').empty(); $('#displayflat article2').empty(); $('#shares').val(''); }); var gtotal=0; var total = 0; var payment = 0; var previouspayments = 0; var sofeilon = 0; var total1 = 0; var payment1 = 0; var previouspayments1 = 0; var sofeilon1 = 0; var len = 0; var list = $('#Code'), allbarcode = [], my = {}, barcode = [], barcodeamount = [], barcodeprevious = [], items = []; $.mobile.notesdb.transaction(function(t) { t.executeSql('SELECT barcode, buildingcode, buildingaddress, flatname, flatdescription, entryseason, period, amount, pastpayments, todaypayments, paydate, receiptno FROM bill WHERE flatname = ? AND flatdescription = ?', [flatname, flatdescription], function(t, resultflatname) { var i, ib, len = resultflatname.rows.length, row = 0, rowprev = 0, rowb = 0; for (i = 0; i < len; i += 1) { row = resultflatname.rows.item(i); if (row.amount > row.todaypayments + row.pastpayments) { if (row.receiptno == 0){ items.push('
'); } else { if ((row.receiptno > 0) && (row.amount > row.todaypayments + row.pastpayments)){ items.push('
'); } } } allbarcode[i] = row.barcode; // barcodeamount[i] = row.amount; // barcodeprevious[i] = row.pastpayments; previouspayments1 = previouspayments1 + row.pastpayments; previouspayments = previouspayments1.toFixed(2); sofeilon1 = sofeilon1 + row.amount; sofeilon = sofeilon1.toFixed(2); total1 = sofeilon - previouspayments; total = total1.toFixed(2); list.html(items.join('\n')); $('#displayflat h1').text(row.flatname); $('#displayflat article').html('

Flatname : ' + row.flatdescription + '

'); if (total != 0){ $('#displayflat article1').html('

Total : ' + total + '

'); $('#displayflat article2').html('

Months Total : ' + sofeilon + '

'); } if (previouspayments != 0) { $('#displayflat article3').html('

Previous Payments : ' + previouspayments + '

'); } } function calcTotal() { $("input:checked").each(function() { var value = [$(this).attr("value")]-[$(this).attr("previous")]; payment = payment + parseFloat(value); //total = total + value }); } function barcodeTotal() { barcode = []; barcodeamount[i]; barcodeprevious[i]; $("input:checked").each(function(i) { barcode[i] = $(this).attr("barcode"); barcodeamount[i] = $(this).attr("value"); barcodeprevious[i] = $(this).attr("previous"); }); } calcTotal(); $("#Payment").html('

Total Payment: ' + payment.toFixed(2) + '

'); $("input:checkbox, input:radio").click(function() { payment = 0; calcTotal(); $("p.total").html("Total Payment: " + payment.toFixed(2) + ""); }); $('#shares').keyup(function(){ payment = 0; calcTotal(); gtotal = ($('#shares').val() * 1) + payment; gtotal = gtotal.toFixed(2); $("p.total").html("Total Payment: " + gtotal + ""); }); $('#shares').keyup(function(){ $("input:checkbox, input:radio").click(function() { payment = 0; calcTotal(); gtotal = ($('#shares').val() * 1) + payment; gtotal = gtotal.toFixed(2); $("p.total").html("Total Payment: " + gtotal + ""); }); }); $("#pay").click(function(e) { barcodeTotal(); updateItem(payment.toFixed(2), gtotal, barcode, barcodeamount, barcodeprevious, allbarcode); }); }) }); } and the code of updateItem. I use alert just to watch how many times executed. function updateItem(payment, gtotal, barcodetotal, barcodeamount, barcodeprevious, allbarcode) { alert(allbarcode); alert(barcodeamount); alert(barcodeprevious); var i, j, len = barcodetotal.length, lenall = allbarcode.length, today, receiptno, row = [], barcodeamount, barcodeprevious, enanti = 0, newbarcode, pasttotal, minimum = 0, myrow; $.mobile.notesdb.transaction(function(t) { t.executeSql('SELECT userid, name, receiptno FROM collector', [], function(t, resultcollector) { myrow = resultcollector.rows.item(0); receiptno = myrow.receiptno + 1; t.executeSql('UPDATE collector SET receiptno = ?', [receiptno]); if (payment > 0 && gtotal == 0) { for (i = 0; i < len; i += 1) { row = barcodetotal[i]; for (j = 0; j < lenall; j += 1) { if (allbarcode[j] == row){ var place = j; } } allbarcode.splice(place, 1); barcodeprevious.slice(place, 1); today = barcodeamount[i] - barcodeprevious[i]; var billtoday = barcodeamount[i]; t.executeSql('UPDATE bill SET pastpayments = ?, receiptno = ?, paydate = date("now") WHERE barcode = ?', [billtoday, receiptno, row]); t.executeSql('INSERT INTO billpayments (barcode, amount, collectorid, receiptno) VALUES (?,?,?,?)', [row, today, myrow.userid, receiptno]); } } if (gtotal > 0) { enanti = gtotal - payment; //alert(enanti); var minimum = Math.min.apply( null, allbarcode ); alert(minimum); t.executeSql('SELECT barcode, amount, pastpayments, todaypayments FROM bill WHERE barcode = ?', [minimum], function(t, previousp) { var myr = previousp.rows.item(0); var todaypp = myr.pastpayments + enanti; t.executeSql('UPDATE bill SET pastpayments = ?, todaypayments = ?, receiptno = ?, paydate = date("now") WHERE barcode = ?', [todaypp, enanti, receiptno, minimum]); t.executeSql('INSERT INTO billpayments (barcode, amount, collectorid, receiptno) VALUES (?,?,?,?)', [minimum, enanti, myrow.userid, receiptno]); }); } $.mobile.changePage('#display', 'slideup', false, true); }) }); } When getItem1 executed for the first time everything is OK. For the second time of getItem1 the updateItem executed I think twice. The third time of getItem1 the updateItem 3 times and so on. After all that I cannot watch if the data are ok...
You asked this same question yesterday here and again I'm going to reiterate that you need to take your SQL queries out of your javascript

以上就是jquery function executed more than once的详细内容,更多请关注web前端其它相关文章!

赞(0) 打赏
未经允许不得转载:web前端首页 » jQuery 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏