Ciao a tutti!
Allora ho una domanda da porre perchè non riesco ad arrivare a capo di questo problema...
Allora io ho un form in php che tramite js e ajax viene controllato dinamicamente.
Ho una pagina php ch econtiene il form e le chiamate alle due pagine javascript...
La pagina validate.js si occupa di prendere i vari dati del form e poi farne delle verifiche:
validate.js
Codice PHP:
window.onload = attachFormHandlers;
function attachFormHandlers()
{
// Make sure we're on a newer browser
if (document.getElementsByTagName)
{
var objInput = document.getElementsByTagName('input'); // get all input tags
var form = document.getElementById('form1') // get the form
for (var iCounter=0; iCounter<objInput.length; iCounter++)
{
objInput[iCounter].onchange = function(){return attach(this);} // attach the onchange event to each input tag
}
form.onsubmit = function(){return validate();} // atttach the onsubmit to the form
}
}
function attach(objInput)
{
sVal = objInput.value; //sVal is the value of the input field being validated
var sFeedBack; //feedback message sent back to the user
var sFeedbackLoc = objInput.getAttribute('message');
if (objInput.getAttribute('required') == "true")
{
sFeedback = validateRequired(sVal); //validateRequired() checks if it is invalid and sends back feedback
}
else sFeedback = "";
if (sVal != "") //if the value is blank we don't need to validate. If it is required, the word
//"required" will already be the feedback message from the validateRequired() function
{
// check the different validation cases (ie: email, phone, etc.)
switch (objInput.getAttribute('validate'))
{
case "email":
sFeedback = validateEmail(sVal);
break;
case "zip":
sFeedback = validateZip(sVal);
break;
case "password":
sFeedback = validatePassword(sVal);
break;
case "name":
sFeedback = validateName(sVal);
break;
case "lastname":
sFeedback = validateLastName(sVal);
break;
}
}
// after validation is complete return the feedback
document.getElementById(sFeedbackLoc).innerHTML = sFeedback;
}
function validateRequired(sVal)
{
if (sVal != "") //if it is rquired and blank then it is an error and continues to be required
{
return ("Thank You");
}
else
{
gContinue = false;
return("Required");
}
}
function validateEmail(sVal)
{
// our email regular expression ([url]http://www.regexlib.com[/url])
var regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
var email = sVal;
return email;
return "Thank You";
}
else
{
return "Invalid Email Address";
}
}
function validatePhone(sVal)
{
// our phone regular expression
// This expression is a very simplex expression that allows null values or 3 digits, dash,
//3 digits, dash, 4 digits. It validates a basic US phone number. Written by Jason N. Gaylord.([url]http://www.regexlib.com[/url])
// Matches: [555-555-1212], [123-456-7890]
var regex=/^(\d{3}-\d{3}-\d{4})*$/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
return "Thank You";
}
else
{
return "Invalid Phone";
}
}
function validateZip(sVal)
{
// our email regular expression
//Javascript matches US zipcodes not allowing all zeros in first 5 or +4 ([url]http://www.regexlib.com[/url])
// Matches: [12345], [12345-6789], [123456789]
var regex=/(^(?!0{5})(\d{5})(?!-?0{4})(-?\d{4})?$)/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
return "Thank You";
}
else
{
return "Invalid ZipCode";
}
}
function validatePassword(sVal)
{
//Description: The password's first character must be a letter, it must contain at least 4 characters
//and no more than 15 characters and no characters other than letters, numbers and the underscore may be used
//Matches: [abcd], [aBc45DSD_sdf], [password] ([url]http://www.regexlib.com[/url])
var regex=/^[a-zA-Z]\w{3,14}$/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
return "Thank You";
}
else
{
return "Invalid Password";
}
}
function validateName(sVal)
{
//This is the simplest RegEx for validating someone's name. The name can contain only alphabets(in either case) &
//should be of minimum length 4 & maximum length 32. Only white spaces are allowed apart from alphabets.
//Matches: [some body], [hey there], [hello] ([url]http://www.regexlib.com[/url])
var regex=/^([a-zA-z\s]{4,32})$/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
return "Thank You";
}
else
{
return "Invalid Name";
}
}
function validateLastName(sVal)
{
//This is the simplest RegEx for validating someone's name. The name can contain only alphabets(in either case) &
//should be of minimum length 4 & maximum length 32. Only white spaces are allowed apart from alphabets.
//Matches: [some body], [hey there], [hello] ([url]http://www.regexlib.com[/url])
var regex=/^([a-zA-z\s]{4,32})$/;
// do the comparison, if we have a match write thank you or else the email is invalid
if (regex.test(sVal))
{
return "Thank You";
}
else
{
return "Invalid Cognome";
}
}
Ok, ora c'è la pagina submitvalidate.js che si occupa principalmente di mandarmi l'errore se tutti i dati non sono stati inseriti correttamente. oppure mi ridirige ad inserisci_dati_form.php
Codice PHP:
var gErrors = 0; //number of errors is set to none to begin with
function validate()
{
var tables; //variable which will become an array holding all elements with the td tagname
// store all <td> elements in the tables array
tables = document.getElementsByTagName('td')
//loop through all the <td> elements
for (i=0; i<tables.length; i++)
{
// if the class name of that td element is rules check to see if there are error warnings
if (tables[i].className == "rules")
{
//if there is a thank you or its blank then it passes
if (tables[i].innerHTML == 'Thank You' || tables[i].innerHTML == '' )
{
tables[i].style.color = '#000000';//the color is changed to blank or stays black
}
else
{
gErrors = gErrors + 1; //the error count increases by 1
tables[i].style.color = '#ff0000';//error messages are changed to red
}
}
}
if (gErrors > 0){
//if there are any errors give a message
alert ("Assicurati che tutti i campi obbligatori siano compilati correttamente!");
gErrors = 0;// reset errors to 0
return false;
}
else
{
//alert("The Form Is Valid!");
window.location = 'inserisci_dati_form.php'
return false;//set this to true in practice to allow the form to submit
}
}
Io però vorrei che alla pagina inserisci_dati_form.php inviassi in qualche modo i dati presi dal form per riceverli con post e lavorare con il database...
Se fossi in php non avrei problemi... ma in js come faccio?
Qualcuno mi da una mano???
GRAZIE!