Originariamente inviato da fcaldera
suggerisco di usare l'attributo "accept" nei campi di input per specificare il tipo di controllo da eseguire invece di legarlo all'id
Puoi spiegarti meglio?
Cercando ho trovato questo link, ma non ho capito come applicare il controllo ai singoli campi, ovvero i campi hanno tipologie differenti di dati.
http://www.w3schools.com/TAGS/att_form_accept.asp
Grazie
Edit
Vi posto quello che ho sviluppato finora.
Non sarà proprio il massimo, ma la mia esperienza in Javascript è alquanto limitata e quindi potrei aver scritto molte stupidaggini.
Nel caso, qualsiasi commento e critica è, chiaramente, ben accetta
Form
Codice PHP:
<form name="form" id="form" class="form" onsubmit="return validate(this)" method="post">
<label for="campo00">Gender:</label>
<select name="campo[0]" id="campo00_select">
<option value="">-- Scegli un valore -- </option>
<?
while($var_tabepara01 = $tabepara01->fetch_assoc())
{
echo "<option value=".$var_tabepara01['codi_ruol'].">".$var_tabepara01['desc_ruol']."</option>";
}
?>
</select>
<label for="campo01">Nome:</label>
<input type="text" name="campo[1]" id="campo01_nume"/>
<label for="campo02">Cognome:</label>
<input type="text" name="campo[2]" id="campo02_text" />
<label for="campo03">E-mail:</label>
<input type="textmail" name="campo[3]" id="campo03_emai" />
<input type="submit" value="Submit" class="submit" />
</form>
Parte Js
1) manca la funzione di visualizzazione dell'errore inlineMsg
2) nel caso di "select" controllo solo se non è stato selezionato il valore (anche perchè altri controllo non hanno senso...)
3) Mancano tutte le funzioni "base"
Codice PHP:
function validate(form) {
var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
for( var i = 0, max = form.elements.length; i < max; i++ ){
var campo_value = document.form.elements['campo['+i+']'].value;
var campo_id = document.form.elements['campo['+i+']'].id;
var tipo = Mid(campo_id,8,campo_id.length);
alert('prova...'+tipo);
if(campo_value == "") {
inlineMsg(campo_id,'Inserire un valore',2);
return false;
}
switch(tipo) {
case "text":
if(!campo_value.match(nameRegex)) {
inlineMsg(campo_id,'Inserire un nome valido',2);
return false;
}
break;
case "email":
if(!campo_value.match(emailRegex)){
inlineMsg(campo_id,'Inserire indirizzo di mail valido',2);
return false;
}
break;
case "nume":
if (isNaN(campo_value)) {
inlineMsg(campo_id,'Inserire solo valori numerici',2);
return false;
}
break;
}
}
}
Da un primo test, sembra che funziona.
Che ve ne pare?