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