PDA

View Full Version : [Javascript] Piccola modifica a script, mi aiutate?


CamilloCorleone
29-04-2013, 22:06
Ciao a tutti,
vi spiego:

io per ora ho dei radio buttons organizzati così:
<input type="radio" name="AAA" value="100" onclick='check_value()' />
<input type="radio" name="AAA" value="200" onclick='check_value()' />
<input type="radio" name="BBB" value="300" onclick='check_value()' />
<input type="radio" name="BBB" value="400" onclick='check_value()' />

Il codice che uso per SOMMARE tutte le scelte dei radio (1 per ogni tipo) selezionati, è il seguente:
<script language="JavaScript" type="text/javascript">
function check_value() {
var total = 0;
var controls = document.getElementsByTagName('input');
for (var i = 0; i < controls.length; i++) {
if ((controls[i].type === 'radio' || controls[i].type === 'checkbox') && controls[i].checked)
total = total + parseFloat(controls[i].value);
}
document.getElementById("totale").innerHTML = "€" + total.toString();
}
</script>

In questo modo, se seleziono il primo AAA ed il secondo BBB il totale è 500, se seleziono il secondo AAA ed il secondo BBB il totale è 600 e via dicendo, credo sia abbastanza intuitivo.

Il problema è che invece di value="100", ho bisogno di avere value="100##descrizione prodotto".
Questo perché i radio sono in un form, e quando vado a fare submit ho bisogno della descrizione, non del numero!

Mi sapete aiutare a modificare lo script in modo che mi faccia uno split e continui a funzionare, prendendo come valore numerico soltanto ciò che c'è prima del ##?
Grazie :)

CamilloCorleone
29-04-2013, 23:11
Ho provato così:

<script language="JavaScript" type="text/javascript">
function check_value() {
var total = 0;
var controls = document.getElementsByTagName('input');
for (var i = 0; i < controls.length; i++) {
if ((controls[i].type === 'radio' || controls[i].type === 'checkbox') && controls[i].checked)
var splittato = controls[i].value.split('@');
total = total + parseFloat(splittato[0]);

}
document.getElementById("totale").innerHTML = "€" + total.toString();
}
</script>

ma ha qualche problemuccio :/ non funziona...

wingman87
30-04-2013, 09:00
Ma perché "splitti" sulla chiocciola (@) quando a te interessa splittare sui cancelletti (##)?

CamilloCorleone
30-04-2013, 09:10
Ma perché "splitti" sulla chiocciola (@) quando a te interessa splittare sui cancelletti (##)?

Perché credevo che il problema potessero essere i cancelletti e dunque li ho sostituiti con la chiocciola.
Ad ogni modo ho scoperto che, anche senza alcuna modifica, probabilmente grazie a come si comporta parseFloat, un 149@descrizione viene preso dalla funzione calcolatrice come 149 e stop :)