[RISOLTO]js function per impostare minimo totale

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Ciao,
premetto che sono unanullità in php e js e ringrazio già anticipatamente chi avrà il buon cuore e la pazienza di aiutarmi...dunque ho una funzione che controlla che i campi del form siano corretti (nome, cognome, tel etc.).
Vorrei aggiungere una funzione che faccia apparire un alert qualora il totale dell'ordine sia minore di 24.
Come posso fare?
Ecco il js:

PHP:
function ValideCommande()
{	//Nom
	if (document.FCommadeValider.tnom.value < 1)
	{
		alert("Vous devez indiquer votre nom!");
		document.FCommadeValider.tnom.focus();
		return false;			
	}
  //Prenom
	if (document.FCommadeValider.tprenom.value < 1)
	{
		alert("Vous devez indiquer votre prenom!");
		document.FCommadeValider.tprenom.focus();
		return false;			
	}
	
	//Téléphone
	if (document.FCommadeValider.ttel.value.length < 10)
	{
		alert("Format du numéro incorrecte!");
		document.FCommadeValider.ttel.focus();
		return false;			
	}
	
	//Téléphone correct
	//var reg = /^0[2,7][0-9]{8,10}/;
	//if (reg.exec(document.FCommadeValider.ttel.value) == null)
	if (document.FCommadeValider.ttel.value < 1)
	{
		alert("Format du numéro incorrecte!");
		document.FCommadeValider.ttel.focus();		
		return false;
	}
	//Rue
	if (document.FCommadeValider.tvia.value < 1)
	{
		alert("Vous devez indiquer votre rue!");
		document.FCommadeValider.tvia.focus();
		return false;			
	}
   //NIP
	if (document.FCommadeValider.tcode.value < 1)
	{
		alert("Vous devez indiquer votre NIP!");
		document.FCommadeValider.tcode.focus();
		return false;			
	}
  
   //Ville
	if (document.FCommadeValider.tville.value < 1)
	{
		alert("Vous devez indiquer votre ville!");
		document.FCommadeValider.tville.focus();
		return false;			
	}
	//Si on rentre un email on vérifie
	if (document.FCommadeValider.tmail.value.length > 0)
	{
		//Email correct
		var reg = /^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+/;
		if (reg.exec(document.FCommadeValider.tmail.value)== null)
		{
			alert("E-mail incorecte!");
			document.FCommadeValider.tmail.focus();		
			return false;
		}
	}
	else
	{
			alert("E-mail incorecte!");
			document.FCommadeValider.tmail.focus();		
			return false;	
	}
	

	document.FCommadeValider.submit();
}
 
Ciao, il totale su cosa lo devi calcolare? hai un campo con il totale?
in questo caso
Codice:
if (parseInt(document.FCommadeValider.totale.value) < 24)
    {
         alert(""); 
    }
 
Grazie mille per la risposta...Ho provato ma non funziona.
Il campo totale è nella pagina php dove c'è il form.
Il prezzo (totale) è la somma degli ordini:
$total = $total + $soustot;
Poi per inviare l'ordine si mette nome indirizzo etc, ma dovrei fare in modo che se il prezzo è minore di 24 ci sia un alert...
 
Ho provato cosi e funziona
HTML:
<script type="text/javascript">
    function ValideCommande() {
        if (parseInt(document.FCommadeValider.totale.value) < 24)
        {
            alert("minore di 24"); 
            return false;
        }

        document.FCommadeValider.submit();
    }  
</script>
<?php
$total = 23;
?>
<form name="FCommadeValider">
    <input type="text" name="totale" value="<?php echo $total ?>"/>
    <input type="button" value="Convalida" onclick="ValideCommande()"/>
</form>
 
Ciao,
ancora grazie per la risposta...
Ho provato, ma probabilmente sbaglio qualcosa nel richiamo della funzione.
Ti mostro il php della pagina del carrello:
PHP:
<?php
echo('<script>');
echo('$(document).ready(function(){');
echo('var d = new Date();');
echo('$("#theurem").val(d.getMinutes() + d.getTime());');
echo('$("#theureh").val(d.getHours());');
echo('});');
echo('</script>');
*/ 
echo '<h1>Votre panier</h1><br />';

//On prend les heures et on ajoute 2min de delai
$heure = @split(':', date('H:i', mktime(date('H'), date('i') + 2, date('s'), date('m'), date('d'), date('Y')))); 

//Affichage de la commande  
if (isset($_SESSION["commande"]["prod"]))
{
	echo '<div class="panier"><table class="panier" border="1" cell-padding="5" cell-spacing="5">
			  <caption>Commande</caption><br />
			  <tr>
				 <th class="panier">Produit</th>
				 <th class="panier">Prix</th>
				 <th class="panier">Quantit&eacute;</th>
				 <th class="panier">Sous total</th>
         <th class="panier">Action</th>
			  </tr>';
	$total = 10;                                       
	$cles = array_keys($_SESSION["commande"]["prod"]);	
	foreach($cles as $i)
	{
		if (array_key_exists($i, $_SESSION["commande"]["prod"]))
		{
			$_SESSION["commande"]["prix"][$i] = str_replace(",", ".", $_SESSION["commande"]["prix"][$i]);
			$soustot = (float)$_SESSION["commande"]["prix"][$i] * (float)$_SESSION["commande"]["quantite"][$i];
			
		  
			
			echo '<tr>
				  <td class="panier">'.stripslashes($_SESSION["commande"]["prod"][$i]).'</td>
				  <td class="panier">'.$_SESSION["commande"]["prix"][$i].' CHF</td>
				  <td class="panier">
				  	<form name="FQuant'.$i.'" method="post" action="index.php?page=panier">
				  	 <input type="text" name="tquant" onkeydown="javascript:chiffres(event);" maxlength="2" value="'.$_SESSION["commande"]["quantite"][$i].'" size="1" />
					   <input type="hidden" name="actu" value="'.$i.'" /> 
					</form>   
				  </td>
				  <td>'.number_format($soustot, 2, ',', ' ').' CHF</td>
          <td class="panier"><a href="index.php?page=panier&sup='.$i.'"><img src="images/design/meno.gif" alt="Supprimer" border="0"/></a> 
          <a href="#" onclick="javascript:document.FQuant'.$i.'.submit();"><img src="images/design/plus.gif" alt="Actualiser" border="0"/></a></td>
          </tr>
          ';
			$total = $total + $soustot;
		}
	}
	echo '<tr>
          <td class="panier">FRAIS DE PORT</td>
          <td class="panier">&nbsp;</td>
          <td class="panier">&nbsp;</td>
          <td class="panier">10.00 CHF</td>
          </tr>
       	</table><br />
			<div class="tot">
			Total : '.number_format($total, 2, ',', ' ').' CHF&nbsp;&nbsp;&nbsp;
			</div>';
	
	if (count($_SESSION["commande"]["prod"]) > 0)
		echo '<p><br />&nbsp;<a class="link" href="index.php?page=commandes">CONTINUER MES ACHATS</a><br /><br /></p>
    <p class="PCentrer"><span>Valider la commande</span></p>
    <div class="modulo">
          <form name="FCommadeValider" method="post" action="index.php?page=validercommande">
							<div class="moduloSx">
								Nom * :<br /> 
                Pr&eacute;nom * :<br /> 
								T&eacute;l&eacute;phone * :<br />
								Email * :<br />
                <u>Adresse de livraison</u> :<br />
                Rue *:<br />
                NIP *:<br />
                Ville *:<br />
								Remarques : 
							</div>
							<div class="moduloDx">
								<input type="text" name="tnom" />&nbsp;&nbsp;<br />
                <input type="text" name="tprenom" />&nbsp;&nbsp;<br />
								<input type="text" name="ttel" />&nbsp;&nbsp;<br />
								<input type="text" name="tmail" />&nbsp;&nbsp;<br /><br />
                <input type="text" name="tvia"  /> <br />
                <input type="text" name="tcode"  /> <br />
                <input type="text" name="tville" /> <br />
								<textarea name="tremarques" cols="30" rows="5"></textarea> <br />
								<p class="ex">* Champs obligatoires</p>
						 </div> 
					</form> 
			   <br /> 
        <p class="ok"><a href="#" onclick="javascript:ValideCommande();"><img src="images/design/okp.png" alt="Valider la commande" /> Valider</a></p><br />
				<p class="carte">Cartes accept&eacute;es :&nbsp;<img src="images/design/paypal.jpg" align="top" alt="carte" title="cartes accept&eacute;es" border="0" /></p>	
</div></div>';
}	  
else
	echo '<div class="vuoto">Votre panier est vide.</div>';

 

?>
 
Ciao,
ho provato ancora con il tuo metodo, quando premo il pulsante convalida non succede nulla. Poi la variabile $total è già uguale a 10 e non posso metterla uguale a 23 come mi hai indicato tu.
Potresti aiutarmi per favore? Ti ringrazio molto e scusa ancora la mia incapacità...
Questo è il form, come vedi non è qui la variabile $total:
PHP:
<form name="FCommadeValider" method="post" action="index.php?page=validercommande">
							<div class="moduloSx">
								Nom * :<br /> 
                Pr&eacute;nom * :<br /> 
								T&eacute;l&eacute;phone * :<br />
								Email * :<br />
                <u>Adresse de livraison</u> :<br />
                Rue *:<br />
                NIP *:<br />
                Ville *:<br />
								Remarques : 
							</div>
							<div class="moduloDx">
								<input type="text" name="tnom" />&nbsp;&nbsp;<br />
                <input type="text" name="tprenom" />&nbsp;&nbsp;<br />
								<input type="text" name="ttel" />&nbsp;&nbsp;<br />
								<input type="text" name="tmail" />&nbsp;&nbsp;<br /><br />
                <input type="text" name="tvia"  /> <br />
                <input type="text" name="tcode"  /> <br />
                <input type="text" name="tville" /> <br />
								<textarea name="tremarques" cols="30" rows="5"></textarea> <br />
								<p class="ex">* Champs obligatoires</p>
						 </div> 
					</form>

La variabile è impostata prima:
$total = 10; (a 10 si aggiunge il sub-totale a seconda dell'ordine che si fa, ma non posso metterlo a 23...)
Poi ho una pagina function.js dove ci sono le funzioni:
HTML:
function ValideCommande()
{	//Nom
	if (document.FCommadeValider.tnom.value < 1)
	{
		alert("Vous devez indiquer votre nom!");
		document.FCommadeValider.tnom.focus();
		return false;			
	}
  //Prenom
	if (document.FCommadeValider.tprenom.value < 1)
	{
		alert("Vous devez indiquer votre prenom!");
		document.FCommadeValider.tprenom.focus();
		return false;			
	}
	
	//Téléphone
	if (document.FCommadeValider.ttel.value.length < 10)
	{
		alert("Format du numéro incorrecte!");
		document.FCommadeValider.ttel.focus();
		return false;			
	}
	
	//Téléphone correct
	//var reg = /^0[2,7][0-9]{8,10}/;
	//if (reg.exec(document.FCommadeValider.ttel.value) == null)
	if (document.FCommadeValider.ttel.value < 1)
	{
		alert("Format du numéro incorrecte!");
		document.FCommadeValider.ttel.focus();		
		return false;
	}
	//Rue
	if (document.FCommadeValider.tvia.value < 1)
	{
		alert("Vous devez indiquer votre rue!");
		document.FCommadeValider.tvia.focus();
		return false;			
	}
   //NIP
	if (document.FCommadeValider.tcode.value < 1)
	{
		alert("Vous devez indiquer votre NIP!");
		document.FCommadeValider.tcode.focus();
		return false;			
	}
  
   //Ville
	if (document.FCommadeValider.tville.value < 1)
	{
		alert("Vous devez indiquer votre ville!");
		document.FCommadeValider.tville.focus();
		return false;			
	}
	//Si on rentre un email on vérifie
	if (document.FCommadeValider.tmail.value.length > 0)
	{
		//Email correct
		var reg = /^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+/;
		if (reg.exec(document.FCommadeValider.tmail.value)== null)
		{
			alert("E-mail incorecte!");
			document.FCommadeValider.tmail.focus();		
			return false;
		}
	}
	else
	{
			alert("E-mail incorecte!");
			document.FCommadeValider.tmail.focus();		
			return false;	
	}
  
     

	document.FCommadeValider.submit();
}

Sento già fischiarmi le orecchie per gli insulti che mi stai mandando, ma non so proprio come fare...scusa e grazie!
 
Nessun insulto ma non capisco
se nel form non hai ancora il totale non puoi fare il controllo sul totale
dovrai farlo quando riesci a calcolarlo e se lo calcoli nella pagina php richiamata ti conviene farlo li in php
 
Ciao, grazie ancora per la tua risposta!
Nella stessa pagina c'è il riepilogo dell'ordine con la somma dei "prezzi dei prodotti" + "totale (fissato già a 10 perché ci sono le spese di spedizione).
Quindi ho l'elenco con il totale già calcolato.
In seguito, nella stessa pagina, si deve compilare un form con nome cognome telefono etc. Con il pulsante ok mando una mail con tutti i dati del form e con il totale. Sarebbe possibile fare in modo che ci sia un alert quando il valore di questo totale sia < di 24?
Sicuramente il tuo metodo funziona, ma non so bene dove infilarlo..
Spero di essermi spiegato bene e scusa ancora la rottura...
 

Discussioni simili