Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [js] Check Form

  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [js] Check Form

    Salve a tutti,
    ho trovato (e modificato per le mie esigenze) questo script su questo forum, ma non sembra funzionare:

    Lo script incluso è questo:
    codice:
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    /*:::::::::::::		    www.wedev.it    	      :::::::::::::*/
    /*::::::::::::: Libreria per la gestione dei form :::::::::::::*/
    /*:::::::::::::        a cura di:Max Calamita     :::::::::::::*/
    /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
    /*TUTTE LE FUNZIONI DI CONTROLLO RESTITUISCONO TRUE O FALSE QUINDI SE SI IMPOSTANO ALL'INVIO DEL FORM (mettendo: return funzione) IL FORM NON VERRA' INVIATO SE IL CONTROLLO NON VERRA' SODDISFATTO.*/
    /*LE FUNZIONI DI RECUPERO PER ORA NON RESTITUISCONO VALORI QUINDI PER VISUALIZZARNE UNO BISOGNA ATTIVARLE RACCHIUDENDOLE TRA ALERT() QUINDI alert(funzione scelta).*/
    
    var submitted = false;
    var error = false;
    var error_message = "";
    
    if(!window.WDL) WDL = {}; 
    WDL.form =
    {
    	/*
    	questa funzione serve per settare le varie proprietà del form va richiamata così: 
    	WDL.form.setta('nome del forum','il metodo di invio(post o get)','cosa deve fare','il tipodi codifica','il target dove deve agire')
    	*/
    	setta : function(nome,metodo,azione,enctype,bersaglio){
    		document[nome].method = metodo;
    		document[nome].action = azione;
    		document[nome].encoding = enctype;
    		document[nome].target = bersaglio;
    	},
    
    	/*
    	questa funzione serve per recuperare le varie proprietà del form va richiamata così: 
    	WDL.form.recupera('nome del forum')
    	*/
    	recupera : function(nome){
    		//proprieta=new Array(document[nome].method,document[nome].action,document[nome].encoding,document[nome].target,document[nome].length)
    		prorpieta=new Array();
    		proprieta.metodo=document[nome].method;
    		proprieta.azione=document[nome].action;
    		proprieta.enctype=document[nome].encoding;
    		proprieta.bersaglio=document[nome].target;
    		proprieta.elementi=document[nome].length;
    		return proprieta;
    	},
    
    	/*
    	questa funzione serve per recuperare le varie proprietà di un campo va richiamata così: 
    	WDL.form.recuperaCampo('nome del forum','nome del campo','tipo')
    	dove tipo è:
    	valore -> valore del campo
    	lunghezza -> lunghezza dei caratteri del campo
    	parole -> conteggio parole del campo(se uno mette li spazi dove devono stare perchè se si scrive "ciao,come va") lo script conta 2 parole ciao,come è una e l'altra è va
    	*/
    	recuperaCampo : function(nome,campo,tipo){
    		controllo=new Array();
    		controllo.valore= document[nome][campo].value;
    		controllo.lunghezza= document[nome][campo].value.length; //lettere
    		controllo.parole= document[nome][campo].value.split(" ").length;  //parole
    		return(controllo[tipo]);
    	},
    
    	/*
    	questa funzione serve per fare controlli semplici sui campi va richiamata così: 
    	WDL.form.controlloStato('nome del forum','nome del campo','tipo')
    	dove tipo è:
    	no_vuoto -> verifica che ci sia almeno un carattere
    	selezionato -> verifica se è cliccato
    	*/
    	controlloStato : function(nome,campo,tipo) {
    		controllo=new Array();
    		controllo.no_vuoto= document[nome][campo].value!='';
    		controllo.selezionato= document[nome][campo].checked;
    		return(controllo[tipo]);
    	},
    
    	/*
    	questa funzione serve per fare controlli standard con le regexp sui campi va richiamata così: 
    	WDL.form.controlloContenuto('nome del forum','nome del campo','tipo')
    	dove tipo è:
    	numero     -> verifica la presenza di un numero
    	nonumero   -> verifica l'assenza di un numero
    	minuscolo  -> verifica che la lettera è minuscolo
    	maiuscolo  -> verifica che la lettera è maiuscolo
    	carattere  -> verifica se è una lettera
    	alfanum    -> verifica che ci siano solo numeri o lettere
    	spazi      -> verifica la presenza di spazi
    	nospazi    -> verifica l'assenza di spazi
    	speciale   -> verifica la presenza di caratteri speciali
    	nospeciale -> verifica l'assenza di caratteri speciali
    	nlinea     -> verifica la presenza di una linea che manda a capo(il carattere ottibile con il tasto invio della tastiera)
    	nonlinea   -> verifica l'assenza di una linea che manda a capo(il carattere ottibile con il tasto invio della tastiera)
    	nome       -> verifica se la parola inserita è un nome quindi la prima lettera maiuscola e le altre minuscole
    	fiscale    -> verifica se è un formato valido di codice fiscale
    	urlst      -> verifica che l'url inserito è di primo livello (www.qualcosa.qualcosa)
    	urlpr      -> verifica la presenza di due punti all'interno della parola
    	mail       -> verifica se è un corretto formato di e-mail
    	*/
    	controlloContenuto : function(nome,campo,tipo) {
    		regarray=new Array();
    		regarray["numero"]     = /^[\d]+$/;
    		regarray["nonumero"]   = /^[\D]+$/;
    		regarray["minuscolo"]  = /^[\a-z]+$/;
    		regarray["maiuscolo"]  = /^[\A-Z]+$/;
    		regarray["carattere"]  = /^[\a-zA-Z]+$/;
    		regarray["alfanum"]    = /^[\w]+$/;
    		regarray["spazi"]      = /^[\s]+$/;
    		regarray["nospazi"]    = /^[\S]+$/;
    		regarray["speciale"]   = /^[\\\/\\$\.\+\?\*\|\^\-\[\]\(\)\_\@\%\&\£]+$/;
    		regarray["nospeciale"] = /^[^\\\/\\$\.\+\?\*\|\^\-\[\]\(\)\_\@\%\&\£]+$/;
    		regarray["nlinea"]     = /^[\n]+$/;
    		regarray["nonlinea"]   = /^[.]+$/;
    		regarray["nome"]       = /^[A-Z][a-z]+$/;
    		//regarray["fiscale"]    = /^[A-Z]{6}[0-9]{2}[A-Z][\w]{4}[a-Z]+$/;
    		regarray["urlst"]      = /^www\.[a-z]+\.[a-z]{2,4}$/;
    		regarray["urlpr"]      = /^[a-z]+\.[a-z]+\.[a-z]+$/;
    		regarray["mail"]       = /^[\w\.\-\_]+\@[\w\.\-\_]+\.[\w]{2,4}$/;
    		return(regarray[tipo].test(document[nome][campo].value));
    	},
    
    	/*
    	questa funzione serve per fare controlli sulla quantità di parole nei campi va richiamata così: 
    	WDL.form.controlloLimitante('nome del forum','nome del campo','tipo','min','max')
    	dove min e max sono i valori della lunghezza della parola/stringa
    	dove tipo è:
    	numero         -> limita un numero
    	alfanumerico   -> limita un numero o una lettera
    	minuscolo      -> limita una lettera minuscola
    	maiuscolo      -> limita una lettera maiuscola
    	lettera        -> limita una lettera
    	carattere      -> limita una stringa(il conteggio è compreso di spazi)
    	*/
    	controlloLimitante : function(nome,campo,tipo,minimo,massimo) {
    		controllo=new Array();
    		controllo.numero = /^\d{minimo,massimo}$/;
    		controllo.alfanumerico = /^\w{minimo,massimo}$/;
    		controllo.minuscolo = /^[a-z]{minimo,massimo}$/;
    		controllo.maiuscolo = /^[A-Z]{minimo,massimo}$/;
    		controllo.lettere = /^[a-zA-Z]{minimo,massimo}$/;
    		controllo.carattere = /^[.]{minimo,massimo}$/;
    		return(controllo[tipo].test(document[nome][campo].value));
    	},
    
    	/*
    	questa funzione controlla se il contenuto del campo è uguale a quello predefinito va richiamata così: 
    	WDL.form.controlloUguaglianza('nome del forum','nome del campo','stringa')
    	dove stringa è il valore predefinito
    	*/
    	controlloUguaglianza : function(nome,campo,stringa) {
    		return document[nome][campo].value==stringa? true:false;
    	}
    }
    Poi, all'interno del mio form, ho inserito questo JavaScript:
    codice:
    			/* WDL :: validation data */
    			function check_form(form_name) {
    			  if (submitted == true) {
    				alert( "Questo modulo è già stato inviato. Premi ok e aspetta che termini il processo." );
    				return false;
    			  }
    			
    /* --------- ho messo questo per controllare se funziona --------- */
    			  if( WDL.form.controlloUguaglianza(form_name,'pcas','') == true ){
    			  	alert('true');
    			  } else {
    			  	alert('false');
    			  }
    /* --------- ho messo questo per controllare se funziona --------- */
    
    			  if (error == true) {
    				alert( error_message );
    				return false;
    			  } else {
    				submitted = true;
    				//return true;
    				//launchPopUp('close');
    			  }
    			}
    Il bottone submit del form lo scrivo così:
    <input name="close" type="button" value="chiudi" class="button" onclick="check_form(testform);" />

    Mentre la select da controllare, diciamo che è questa:
    <select name="pcas" class="select">
    <option value="">not set</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>

    Qualcuno sa dirmi perchè non funziona?
    Grazie
    わさび

  2. #2
    beh, perché è una select non un input:

    se cerchi la funzione controlloUguaglianza noterai che controlla
    return document[nome][campo].value==stringa? true:false;
    che significa:
    tornami true se l'attributo value dell'elemento con nome = "nome" e campo = "campo", anche se questa non è la sintassi che avrei usato, è diverso da 0, null o false, flase altrimenti.

    Questo può, anche se, come ti dicevo, non è la sintassi migliore a mio avviso, funzionare per gli input, ma un select non si interroga così.

    io farei un altra funzione:
    Codice PHP:
    controlloUguaglianzaSelect : function(nome,campo,stringa) {
       var 
    elem document.getElementsByName(nome)[campo != '' parseInt(campo) : 0];
       return 
    elem.options[elem.selectedIndex].value true false;

    e poi modificherei la funzione
    Codice PHP:
    /* WDL :: validation data */
    function check_form(form_name) {
      if (
    submitted == true) {
        
    alert"Questo modulo è già stato inviato. Premi ok e aspetta che termini il processo." );
        return 
    false;
      }
                
    /* --------- ho messo questo per controllare se funziona --------- */
      
    if( WDL.form.controlloUguaglianzaSelect(form_name,'pcas','') == true ){
          
    alert('true');
      } else {
          
    alert('false');
      }
    /* --------- ho messo questo per controllare se funziona --------- */

      
    if (error == true) {
        
    alerterror_message );
        return 
    false;
      } else {
        
    submitted true;
        
    //return true;
        //launchPopUp('close');
      
    }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.