Ciao
ho ristudiato ancora la situazione, corretto eventuali imprecisazioni, e ti confermo che nelle versioni precedenti funzionava e funziona ancora (vedi Ff 1.0.6 S.O. Mandrake Linux 2006). Inoltre quando mi sono ancorto del problema la versione su win98 era ancora la precedente e l'ho aggiornata appositamente perche su winXp mi dava il problema, anche sul 98 una volta aggiornato.
Ora che gli aggiornamenti sono automatici ho la versione 1.5.0.4 e il problema persite
Nella precedente comunicazione, la pagina di risposta (apreta con metodo _self) anziché tornare indietro di 1 nella cronologia, apre una nuova pagina e si chiude se stessa (self.close). Questo facendo anche attenzione, che le finestre non avessero lo stesso nome.
Bene, il problema del loop rimane.
Analizzando gli eventi:
una finestra (nome=quantitatemp, file=qta.php) che contiene un form per l'inserimento di un input numerico, ha al posto del pulsante submit un pulsante tipo button che produce un'evento di controllo sul valore inserito.
Se il valore inserito nella cella risulta valido si produce l'evento submit che apre una nuova pagina (procedi.php).
In questo modo il valore passato alla nuova pagina (procedi.php) è comunque sempre valido.
Dunque il problema non si genera.
Qui il problema:
Siccome nella pagina qta.php, che contiene il form, dopo aver inserito nella cella un valore=X, premendo <Invio> nella tastiera, al posto del click sul pulsante (Invia), non genera un evento di controllo ma prende il submit del modulo, il valore X viene passato nella pagina successiva (procedi.php).
Si rende necessario dunque il controllo del valore (php), se il valore X non soddisfa viene generato un'evento JS.
Questo evento apre un'alert e poi apre (ora) una nuova finestra (_blank) che richiama la stessa pagina precedente (qta.php) e poi si chiude.
Note:
in questo modo ho tolto l'evento histori.go perchè apro una nuova finestra con nome diverso.
Errore:
Tornando alla pagina successiva sembra che l'evento click sul pulsante <Invia> venga comunque generato (considerare che prima non è stato chiamato, in quanto si è prenuto invio sulla tastiera)
Questo genera un loop sulla funzione promt, per il valore X, di JS
Vi posto i codici modificati
Questo il codice dove esite il form forminputqta e input inqty (qta.php):
<script language="JavaScript" type="text/javascript">
<!--
//LIMITE E' IL VALORE DA NON SUPERARE,POSIZIONE E' IL NOME DEL CAMPO DA CONTROLLARE
function Check(limite,posizione)
{
//CONTROLLO L'ELEMENTO DEL FORM RELATIVO AL NOME DEL CAMPO NE ESTRAGGO IL VALORE E LO ASSEGNO AD UNA VARIABILE
numeroins=document.forminputqta.inqty.value;
//LE DUE RIGHE SEGUENTI NON SONO NECESSARIE MI SERVONO SOLO PER VEDERE SE I VALORI DENTRO LE VARIABILI SONO GIUSTI
//alert("Valore del campo= "+numeroins);
//alert("Valore minimo= "+limite);
//alert("Valore della posizione= "+posizione);
soglia=(numeroins / limite);
//alert("Valore della soglia= "+soglia);
confezioni=Math.ceil ( soglia );
//alert("Valore delle confezioni= "+confezioni);
suggerito=(Math.ceil ( soglia )*limite);
//alert("Valore suggerito= "+suggerito);
//IMPOSTO UN CICLO PER CONTROLLARE SE SUPER IL LIMITE E DO LA POSSIBILITA' ALL'UTENTE DI RIDIGITARE FINCHE' SARA' RISPETTATO IL LIMITE;
while((numeroins != suggerito) && (numeroins > 0)) {
//alert("ATTENZIONE !! Ci è impossibile soddisfare la quantità richiesta ("+numeroins+"), è inferiore al minimo d'ordine("+suggerito+")");
valore=prompt("ATTENZIONE !! la quantità richiesta ("+numeroins+") non rientra nella quantità contenuta nelle confezioni ("+confezioni+"). Quantità consigliata=("+suggerito+") - RIDIGITARLO (0= annulla)",suggerito);
numeroins=valore;
soglia=(numeroins / limite);
suggerito=(Math.ceil ( soglia )*limite);
document.forminputqta.inqty.value=suggerito;
document.forminputqta.inqty.focus();
document.forms[0].inqty.value=valore;
// alert("valore modificato !!");
document.forminputqta.submit();
}
document.forminputqta.submit();
}
//-->
</script>
questo il codice nella pagina procedi.php
if ($inqty < $minqta)
{
?>
<script>
alert("Attenzione! Il valore inserito nella quantità degli articoli non è valido");
window.open('procedi.php?aggiunta=<? echo $aggiunta;?>&ns_cod_quantita=<? echo $incodi;?>','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=700,height=500, top=30, left=30');
self.close();
</script>
<?
exit;
}
Grazie per la collaborazione
Stefano