Sono nuovo a jQuery quindi vado per tentativi e chiedo a chi è più esperto un aiuto.
Questa è la parte di codice incriminata
Il problema in particolare è nella parte relativa a al ricalcolo del totale
in pratica questa funzione calcola il totale del prezzo ad ogni click su una mappa e lo ricalcola quando viene cliccato nuovamente l'elemento (deselezionandolo).
Quando clicco per selezionare la funzione calcola il totale correttamente, mentre quando riclicco un elemento per deselezionarlo, alla prima deselezione (o riclick), l'importo non viene sottratto.
Per essere più concreto faccio un esempio:
se seleziono tre elementi al prezzo di 10 euro ciascuno, ad ogni click il totale viene aggiornato correttamente (10+10+10=30);
quando deseleziono i tre elementi, al primo click il totale non viene aggiornato mentre mentre nei successivi riclick il totale viene sì aggiornato ma non ritorna =0 bensì 10.
Cioè mi trovo che non essendo selezionato alcun elemento, il totale mi riporta 10!
Ho provato ad inserire questa variazione ma il calcolo viene completamente errato
Qualche suggerimento?
Grazie
Questa è la parte di codice incriminata
Codice:
click: function () { //Click event
if (this.status() == 'available') { //optional seat
var maxSeats = 3;
var ms = sc.find('selected').length;
//alert(ms);
if (ms < maxSeats) {
price = this.settings.data.price;
/*
$('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+'</option>')
.attr('id', 'cart-item-'+this.settings.id)
.attr('value', (this.settings.row+1)+'_'+this.settings.label)
.data('seatId', this.settings.id)
.appendTo($cart);
*/
$('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+'</option>')
.attr('id', 'cart-item-'+this.settings.id)
.attr('value', this.settings.id)
.attr('alt', price)
.data('seatId', this.settings.id)
.appendTo($cart);
$counter.text(sc.find('selected').length+1);
$counter.attr('value', sc.find('selected').length+1);
$total.text(recalculateTotal(sc));
$total.attr('value', recalculateTotal(sc));
return 'selected';
}
alert('You can only choose '+ maxSeats + ' seats.');
return 'available';
} else if (this.status() == 'selected') { //Checked
//Update Number
$counter.text(sc.find('selected').length-1);
$counter.attr('value', sc.find('selected').length-1);
//update totalnum
$total.text(recalculateTotal(sc));
$total.attr('value', recalculateTotal(sc));
//Delete reservation
$('#cart-item-'+this.settings.id).remove();
//optional
return 'available';
} else if (this.status() == 'unavailable') { //sold
return 'unavailable';
} else {
return this.style();
}
}
});
Il problema in particolare è nella parte relativa a al ricalcolo del totale
Codice:
$total.text(recalculateTotal(sc));
$total.attr('value', recalculateTotal(sc));
Quando clicco per selezionare la funzione calcola il totale correttamente, mentre quando riclicco un elemento per deselezionarlo, alla prima deselezione (o riclick), l'importo non viene sottratto.
Per essere più concreto faccio un esempio:
se seleziono tre elementi al prezzo di 10 euro ciascuno, ad ogni click il totale viene aggiornato correttamente (10+10+10=30);
quando deseleziono i tre elementi, al primo click il totale non viene aggiornato mentre mentre nei successivi riclick il totale viene sì aggiornato ma non ritorna =0 bensì 10.
Cioè mi trovo che non essendo selezionato alcun elemento, il totale mi riporta 10!
Ho provato ad inserire questa variazione ma il calcolo viene completamente errato
Codice:
...........
...........
$total.text(recalculateTotal(sc)+this.settings.data.price);
$total.attr('value', recalculateTotal(sc)+this.settings.data.price);
return 'selected';
}
alert('You can only choose '+ maxSeats + ' seats.');
return 'available';
} else if (this.status() == 'selected') { //Checked
......
......
//update totalnum
$total.text(recalculateTotal(sc)-this.settings.data.price);
$total.attr('value', recalculateTotal(sc)-this.settings.data.price);
Qualche suggerimento?
Grazie