Form - Tutti i campi obbligatori

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
salve. ho questo script in javascript che mi controlla il campo se è stato inserito o no..

ma io vorrei fare un po prima invece di scrivere tutti gli if etc..

e alcune volte controllo anche se la data inserita deve essere 18-04-2012,
e alcune volte ho dei checkbox ..

invece cosi ... mettere un Repilogo di tutti campi obbligatori.?

ecco lo script.. lo script non è mio ma e di un esempio che ho trovato sulla rete.
PHP:
<script language="javascript">
	function CheckForm(form){
		//Avvio il controllo dei campi
		var booReturn = true;
		//strMessage
		var strMessage = "Attenzione, compilare i seguenti campi:\n"
		
		//Controllo
		if(form.strTitolo.value == ""){
			strMessage += "*Titolo\n";
			booReturn = false;
		}
	
	
		if(form.strStato.value == ""){
			strMessage += "*strStato\n";
			booReturn = false;
		}
		
		//Ritorno booReturn
		if(booReturn == false){
			alert (strMessage);
		}
		return booReturn;
	}
	</script>

grazie mille.
buona giornata.
 
Ciao
potresti aggiungere un ciclo su tutti gli elementi e verificarli

piu o meno cosi

Codice:
<script language="javascript">
    function CheckForm(form){
        // conti gli elementi del form    
        var elementi = form.elements.length;
        // li cicli
        for(var i = 0; i < elementi; i++){
            // verifichi che ognuno contenga qualcosa
            if(form.elements[i].value.length == 0){                
               // altrimenti avvisi ed esci
                alert("Tutti i campi sono obbligatori");
                return false;
            }
        }
        
        // poi puoi andare avanti con altri controlli
    }
</script>
 
Ciao
potresti aggiungere un ciclo su tutti gli elementi e verificarli

piu o meno cosi

Codice:
<script language="javascript">
    function CheckForm(form){
        // conti gli elementi del form    
        var elementi = form.elements.length;
        // li cicli
        for(var i = 0; i < elementi; i++){
            // verifichi che ognuno contenga qualcosa
            if(form.elements[i].value.length == 0){                
               // altrimenti avvisi ed esci
                alert("Tutti i campi sono obbligatori");
                return false;
            }
        }
        
        // poi puoi andare avanti con altri controlli
    }
</script>

si cosi va bene.. solo che anche se ho inserito tutti mi dice sempre di inserire i dati come posso fare che quando è tutto pieno posso far inserire i dati.


PS: Non mi piace jquery..scusate molto..

Ma mi va bene questo script ..

Grazie mille..
 
si cosi va bene.. solo che anche se ho inserito tutti mi dice sempre di inserire i dati come posso fare che quando è tutto pieno posso far inserire i dati.


PS: Non mi piace jquery..scusate molto..

Ma mi va bene questo script ..

Grazie mille..

Ti ho sistemato lo script e fatto un esempio:

Codice:
<script language="javascript">
    function CheckForm(form){
        // conti gli elementi del form    
        var elementi = form.elements.length;
        // li cicli
        for(var i = 0; i < elementi; i++){
            // verifichi che ognuno contenga qualcosa
            if(form.elements[i].value.length == 0){                
               // setti error se manca un elemento del form
                var error = true;
            }
        }
     //controllo error e else per non ripetere gli alert
       if(!error){ form.submit(); }else{ alert("Tutti i campi sono obbligatori"); }
        
        // poi puoi andare avanti con altri controlli
    }
</script>
<form action='lol.php' method='POST' id='test'>
<input type='text' id='asd'>
<input type='text' id='asd2'>
<input type='text' id='asd3'>
<input type='button' onclick="CheckForm(this.form)" value='cane'></form>
 
ok, ho provato mille modi ma no fa..

ansi ho dovuto fare i controlli lato server perché lo javascript .. controllava a meta .. forse per via del form che velo posto:
PHP:
//Form aggiunta news
if($action == "aggiungi"){
	$strStato  = (isset($_POST['strStato'])) ? trim ($_POST['strStato']): '';
	
	if(isset($_POST["submit"]))
	{
	
	//Recupero tutti dati
	
	$intNewsID = (isset($_POST['intNewsID'])) ? trim ($_POST['intNewsID']): '';
	$dtmPubblicazione = (isset($_POST['strData'])) ? trim ($_POST['strData']): ''; 
	$strStato  = (isset($_POST['strStato'])) ? trim ($_POST['strStato']): '';
	$strTitolo = (isset($_POST['strTitolo'])) ? trim ($_POST['strTitolo']): '';
	$strTesto = (isset($_POST['strTesto'])) ? trim ($_POST['strTesto']): '';
       $dtmPubblicazione = $_POST["strData"];
       $data_explode = explode('-', $dtmPubblicazione); 
       $dtmPubblicazione = "".$data_explode[2]."".$data_explode[1]."".$data_explode[0]."";



	
	if (!get_magic_quotes_gpc()) {
		
		$strTitolo = addslashes($strTitolo);
		$strTesto = addslashes($strTesto);
		$strStato  = addslashes($strStato);
		$dtmPubblicazione = addslashes($dtmPubblicazione);
	}
	
	if(empty($strTitolo))
	{
		$error = "Non hai inserito il titolo";
	}elseif(empty($strTesto))
	{
	$error = "Non hai inserito il testo";
	}
	elseif(empty($strStato))
	{
	$error = "Non hai inserito lo stato";
	}elseif(empty($dtmPubblicazione))
	{
	$error = "Non hai inserito la data";
	}else
	{
	
		$strSQL = mysql_query("INSERT INTO news ("
				. "strTitolo,"
				. "strTesto,"
				. "strStato,"
				. "dtmPubblicazione) VALUES("
				. "'$strTitolo',"
				. "'$strTesto',"
				. "'$strStato',"
				. "'$dtmPubblicazione')") or die(mysql_error());
		$msg = "fatto";
		$msg .= "<br><a href='index.php?m=news'>Torna indietro</a>";
				
	}
	}
	
	?>
<script language="javascript">
    function CheckForm(form){
        // conti gli elementi del form    
        var elementi = form.elements.length;
        // li cicli
        for(var i = 0; i < elementi; i++){
            // verifichi che ognuno contenga qualcosa
            if(form.elements[i].value.length == 0){                
               // setti error se manca un elemento del form
                var error = true;
            }
        }
     //controllo error e else per non ripetere gli alert
       if(!error){ form.submit(); }else{ alert("Tutti i campi sono obbligatori"); }
        
        // poi puoi andare avanti con altri controlli
    }
</script>
	<h1>Aggiungi news</h1>
	<?php
	if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	
	if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {
	?>
    <form method="post" action="index.php?m=news&action=aggiungi" >
    <table width="100%" border="1">
  <tr>
    <td>
Titolo:&nbsp;</td>
    <td><input type="text" name="strTitolo" value="<?php if(isset($strTitolo)){echo $strTitolo;}else { echo isset($strTitolo); }?>" size="50" maxlength="100" /></td>
  </tr><tr>
    <td>
Testo:&nbsp;</td>
    <td><textarea name="strTesto" cols="70" rows="20"><?php if(isset($strTesto)){echo $strTesto;}else { echo isset($strTesto); }?></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="radio" name="strStato" value="1" <?php if($strStato=='1') echo 'checked="checked"'?> />
      Pubblica</label>
      <label>
        <input type="radio" name="strStato" value="2" <?php if($strStato=='2') echo 'checked="checked"'?>/>
    Nascondi</label></td>
  </tr>
  <tr>
    <td>Data:&nbsp;</td>
    <td><input type="text" name="strData" value="<?php echo date("d-m-Y");?>" size="50" maxlength="100" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Inserisci" />
    </td>
  </tr>
</table>
</form>
	<?php
	}
}

come posso fare?

non posso usare type="button" mi serve per forsa submit e il nome del form.

idee?

grazie mille.
 
Devi dare un id o un name al form (e agli elementi magari):
Codice:
<form method="post" action="index.php?m=news&action=aggiungi" id='mio_id'>

E usare un button non un submit richiamando la funzione sul click

Codice:
<input type='button' onclick="CheckForm(this.form)" value='invia'>

Infatti se copi e incolli il codice che ho messo sopra in una pagina funziona perfettamente :)


"per forza submit" Perchè scusa? Il submit avviene in automatico se tutti i campi ci sono (vedi la funzione)
 
Ultima modifica:
@Nefyt
l'input submit lo usa poi per fare i controlli lato server con php

@luigi777
puoi provare a richiamare la funzione nel tag form con onsubmit

HTML:
<form method="post" onsubmit="CheckForm(this)" action="index.php?m=news&action=aggiungi" >

e nel codice javascript dopo l'alert metti return false (dovrebbe bloccarti l'invio del form)

a questo punto dovrai però togliere il submit() dalla funzione
 
@Nefyt
l'input submit lo usa poi per fare i controlli lato server con php

@luigi777
puoi provare a richiamare la funzione nel tag form con onsubmit

HTML:
<form method="post" onsubmit="CheckForm(this)" action="index.php?m=news&action=aggiungi" >

e nel codice javascript dopo l'alert metti return false (dovrebbe bloccarti l'invio del form)

a questo punto dovrai però togliere il submit() dalla funzione
Il submit si trova qui se tutti i campi sono compilati:
Codice:
if(!error){ form.submit(); }else{ alert("Tutti i campi sono obbligatori"); }
perciò non vedo qual'è il problema

Se ti riferisci a if(isset($_POST["submit"])), potrebbe semplicemente cambiare variabile post
oppure non utilizzare un operatore ternario su tutte le variabili
 
Ultima modifica:

Discussioni simili