allora
ho questo codice che tramite php e mysql riempie il menu della select:
Codice PHP:
........
$option .= '<option value="'.$rowgg['valore'].'">' . $rowgg['scritta'] . '</option>';
}
echo '<select name="incremento" onchange="validami(this, 7)"></option>' . $option . '</select>';
?>
.........
per la settima voce si attiva una funzione javascript, questa:
Codice:
<script type="text/javascript">
function validami(sel, index){
if(sel.selectedIndex==index){
sel.form.datafinale.disabled=true; sel.form.datafinale.value='';
sel.form.calcola.disabled=true;
}
else{
sel.form.datafinale.disabled=false;
sel.form.calcola.disabled=false;
};
}
</script>
ora vorrei richiamare un'altra funzione per le altre precedenti 6 voci che attualmente viene richiamata cliccando un bottone. La funzione in oggetto è questa:
Codice:
function DataValida(stringa, formatoItaliano){
if (stringa.length != 10) {
return false;
}
var i;
for (i = 0; i < stringa.length; i++) {
var c = stringa.charAt(i);
// posizione 2 e 5 devono essere /.
if ((i == 2 && c != "/") || (i == 5 && c != "/")) {
return false;
}
// le altre devono essere numeri.
if ((i != 2 && i != 5) && ((c < "0") || (c > "9"))) {
return false;
}
}
var splittata = stringa.split("/");
if (formatoItaliano == true) {
var gg = new Number(splittata[0])
var mm = new Number(splittata[1])
}
else {
var mm = new Number(splittata[0])
var gg = new Number(splittata[1])
}
var aa = new Number(splittata[2])
/*Controllo mesi*/
if (mm < 1 || mm > 12) {
return false;
}
//Bisestile
bisestile = false;
if (((aa % 4 == 0) && ((!(aa % 100 == 0)) || (aa % 400 == 0)))) {
bisestile = true;
}
var arrMesi = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var maxg = arrMesi[mm - 1];
if ((mm == 2 && bisestile == true)) {
maxg = 29;
}
if (gg > maxg || gg == 0) {
return false;
}
return true;
}
function dateAdd(){
/*Formato data (variabile itaform true se formato gg/mm/aaaa false se formato mm/gg/aaaa) */
var itaform = true;
j_data = document.myform.inputdata.value
/*Verifico che la data sia valida */
if (DataValida(j_data, itaform) == false) {
alert('Data non valida');
return false;
}
/*Inverto giorno e mese per il calcolo */
if (itaform != false) {
var splittata = j_data.split("/");
j_data = (splittata[1] + "/" + splittata[0] + "/" + splittata[2]);
}
/*Verifico il valore da aggiungere sia intero numerico e diverso da 0*/
j_increm = parseInt(document.myform.incremento.value)
t_increm = document.myform.incremento.value;
if (isNaN(j_increm) || j_increm == '0' || j_increm == '' || j_increm != t_increm) {
alert('Valore da aggiungere non valido');
return false;
}
/*Estraggo il tipo di intervallo (variabile : t_intervallo) */
var t_intervallo = 'd';
/*Effettuo il calcolo */
j_increm = new Number(j_increm);
var dt = new Date(j_data);
switch (t_intervallo) {
case "d":{// giorni
dt.setDate(dt.getDate() + j_increm);
break;
}
}
giorno = dt.getDate(dt)
if (giorno < '10') {
giorno = '0' + giorno
}
mese = dt.getMonth(dt) + 1
if (mese < '10') {
mese = '0' + mese
}
anno = dt.getFullYear(dt)
if (itaform == true) {
document.myform.datafinale.value = giorno + "/" + mese + "/" + anno;
}
else {
document.myform.datafinale.value = mese + "/" + giorno + "/" + anno;
}
return true;
}
Questa funzione in pratica mi calcola una data rispetto ad un'altra in base ai giorni inseriti (30gg, 60gg ecc ecc)
Ricapitolando vorrei quindi richiamare questa ultima funzione per i primi 6 elementi della select e la prima funzione per l'ultimo elemento.
Devo fare una fusione in una stessa funzione? Come? Non ne capisco molto di javascript.
E' possibile invece richiamare funzioni differenti per la stessa select?
Grazie