Ciao a tutti ho un piccolo quesito, visto che javascript lo mastico molto poco.

Ho scaricato lo script validation per fare i controlli su un form e funziona egregiamente.

Come dicevo funziona bene, controlla i campi se sono di testo, numerici o mail.

Chiedo a voi luminari come faccio a inglobare questo scriptino in un form dove ho una menu a tendina dove ho Ditta o Individuale, se ditta, il campo ditta deve essere compilato...

Nel head ho questo:

<script src="validation.js" language="JavaScript"></script>
<script language="JavaScript">
function init(){
define('FirstName','string','Nome');
define('LastName','string','Cognome');
define('PrimaryEmail','email','Indirizzo mail');
define('Address1','string','Indirizzo');
define('PostCode','num','CAP');
define('Town','string','Città');
define('HomePhone','num','Tel. Primario');
define('Dominio','string','Dominio');

}
</script>


Nel body questo:
<body onLoad="init();">


E come action del form questo:
<FORM method="POST" action="invia_registrazione.php" onSubmit="validate();return returnVal;">



il file js:

function define(n,type,HTMLname,min,max,d){
var p;
var i;
var x;
if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length){
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) x=d.all[n];

for (i=0;!x&&i<d.forms.length;i++){
x=d.forms[i][n];
}
for(i=0;!x&&d.layers&&i<d.layers.length;i++){
x=define(n,type,HTMLname,min,max,d.layers[i].document);
return x;
}

// Create Object. The name will be "V_something" where something is the "n" parameter above.
eval("V_"+n+" = new formResult(x,type,HTMLname,min,max);");
checkObjects[eval(checkObjects.length)] = eval("V_"+n);
}

// -----------------------------------------------------------------------------
// formResult - Used internally to create the objects
// -----------------------------------------------------------------------------
function formResult(form,type,HTMLname,min,max){
this.form = form;
this.type = type;
this.HTMLname = HTMLname;
this.min = min;
this.max = max;
}

// -----------------------------------------------------------------------------
// validate - Call this function onSubmit and return the "returnVal". (onSubmit="validate();return returnVal;")
// -----------------------------------------------------------------------------
function validate(){
if(checkObjects.length>0){
errorObject = "";

for(i=0;i<checkObjects.length;i++){
validateObject = new Object();
validateObject.form = checkObjects[i].form;
validateObject.HTMLname = checkObjects[i].HTMLname;
validateObject.val = checkObjects[i].form.value;
validateObject.len = checkObjects[i].form.value.length;
validateObject.min = checkObjects[i].min;
validateObject.max = checkObjects[i].max;
validateObject.type = checkObjects[i].type;

//Debug alert line
//alert("validateObject: "+validateObject+"\nvalidateObject.val: "+validateObject.val+"\nvalidateObject.len: "+validateObject.len+"\nvalidateObject.min,validat eObject.max: "+validateObject.min+","+validateObject.max+"\nval idateObject.type: "+validateObject.type);

// Checking input. If "min" and/or "max" is defined the input has to be within the specific range
if(validateObject.type == "num" || validateObject.type == "string"){
if((validateObject.type == "num" && validateObject.len <= 0) || (validateObject.type == "num" && isNaN(validateObject.val))){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].num+"\n";
} else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].min+validateObject.min+language[selectecLanguage].minmax+validateObject.max+language[selectecLanguage].chars+"\n";
} else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].min+validateObject.min+language[selectecLanguage].chars+"\n";
} else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].max+validateObject.max+language[selectecLanguage].chars+"\n";
} else if (!validateObject.min && !validateObject.max && validateObject.len <= 0){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+"\n";
}
} else if(validateObject.type == "email"){
// Checking existense of "@" and ".". The length of the input must be at least 5 characters. The "." must neither be preceding the "@" nor follow it.
if((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") ||(validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.inde xOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.inde xOf("@")-1) == ".")){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].email+"\n";}
}
}
}
// Used to set the state of the returnVal. If errors -> show error messages in chosen language
if(errors){
alert(language[selectecLanguage].header.concat("\n"+errors));
errors = "";
returnVal = false;
} else {
returnVal = true;
}
}
Come detto così funziona, vorrei solo fare un condizionale


Grazie per l'aiuto

TEO