Newsgroup: it.comp.lang.javascript
Titolo: In qualsiasi campo io introduca la lettera "@" mi diventa un cam po e-mail

Ciao a tutti questa funzione di controllo funziona bene tranne per il
fatto che se per esempio metto una chiocciola "@" dentro al campo
ragione sociale, questo viene interpretato come un campo E-mail e mi fa
scattare il controllo.
Sapete aiutarmi?
Grazie Alen
------------------------
function controlla(oForm){
	campiNonObbligatori= new Array('Fax','CodiceDelta');
	campiNumerici=new Array('Cap','Telefono');
	campoPostaElettronica=new Array('Email');
	errors=''
	obj=oForm.elements;
	for (i=0; i<obj.length;i++){
 
		if (obj[i].type=='text' || obj[i].type=='password') {
			if (obj[i].value!=''){
				if (obj[i].name=='EMail' && obj[i].value.indexOf('@')<0 ||
obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.')) errors+='-
'+obj[i].name+' deve contenere un indirizzo di posta elettronica.\n';
				if (campiNumerici.toString().indexOf(obj[i].name)>=0 &&
isNaN(obj[i].value)) errors+='- '+obj[i].name+' deve contenere un
numero.\n';
			} else if (campiNonObbligatori.toString().indexOf(obj[i].name)<0)
errors += '- '+obj[i].name+' is required.\n';
		}
	}
 
	if (oForm.ClienteDelta[0].checked==true & oForm.CodiceDelta.value ==
"") errors +="Se sei gią cliente, devi inserire il tuo codice
identificativo.\n";
	if (oForm.Autorizzo675.checked==false) errors +='Il form non puņ essere
processato. Spuntare il check box per il trattamento dei dati.\n';
	if (oForm.CheckPassword.value!=oForm.Password.value ) errors
+="Password e controllo password differiscono."
	if (errors) {
		alert('Form compilato in maniera errata:\n'+errors);
		return false;
	}
	return true
}
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
°°°°°°°°°°°°°°°°°° PAGINA COMPLETA °°°°°°°°°°°°°°°°°
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
<!--
function controlla(oForm){
	campiNonObbligatori= new Array('Fax','CodiceDelta');
	campiNumerici=new Array('Cap','Telefono');
	campoPostaElettronica=new Array('Email');
	errors=''
	obj=oForm.elements;
	for (i=0; i<obj.length;i++){
 
		if (obj[i].type=='text' || obj[i].type=='password') {
			if (obj[i].value!=''){
				if (obj[i].name=='EMail' && obj[i].value.indexOf('@')<0 ||
obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.')) errors+='-
'+obj[i].name+' deve contenere un indirizzo di posta elettronica.\n';
				if (campiNumerici.toString().indexOf(obj[i].name)>=0 &&
isNaN(obj[i].value)) errors+='- '+obj[i].name+' deve contenere un
numero.\n';
			} else if (campiNonObbligatori.toString().indexOf(obj[i].name)<0)
errors += '- '+obj[i].name+' is required.\n';
		}
	}
 
	if (oForm.ClienteDelta[0].checked==true & oForm.CodiceDelta.value ==
"") errors +="Se sei gią cliente, devi inserire il tuo codice
identificativo.\n";
	if (oForm.Autorizzo675.checked==false) errors +='Il form non puņ essere
processato. Spuntare il check box per il trattamento dei dati.\n';
	if (oForm.CheckPassword.value!=oForm.Password.value ) errors
+="Password e controllo password differiscono."
	if (errors) {
		alert('Form compilato in maniera errata:\n'+errors);
		return false;
	}
	return true
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form method="post"
action="/versione_4/intranet/pag_registrazione_send_alen.asp"
name="form_registra" onSubmit="return controlla(this)">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td valign="top" width="6"><img src="../images/nulla.gif"
width="6" height="1"></td>
      <td valign="top">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td width="150"><b>Nome</b></td>
            <td> 
              <input type="text" name="Nome" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Cognome</b></td>
            <td> 
              <input type="text" name="Cognome" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Posizione</b></td>
            <td> 
              <input type="text" name="Posizione" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Azienda</b></td>
            <td> 
              <input type="text" name="RagioneSociale" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Indirizzo</b></td>
            <td> 
              <input type="text" name="Indirizzo" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>C.a.p.</b></td>
            <td> 
              <input type="text" name="Cap" size="15" maxlength="5">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Citt&agrave;</b></td>
            <td> 
              <input type="text" name="Citta" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Provincia</b></td>
            <td> 
              <input type="text" name="Provincia" size="5"
maxlength="2">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Telefono</b></td>
            <td> 
              <input type="text" name="Telefono" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150">Fax</td>
            <td> 
              <input type="text" name="Fax" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150">Gi&agrave; cliente <b> </b></td>
            <td> 
              <input type="radio" name="ClienteDelta" value="1">
              Si &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              <input type="radio" name="ClienteDelta" value="0" checked>
              No </td>
          </tr>
          <tr> 
            <td width="150">Codice </td>
            <td> 
              <input type="text" name="CodiceDelta" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150">&nbsp;</td>
            <td>( Il codice si trova sulle fatture. Inserendo la
registrazione
              verr&agrave; effettuata immediatamente.) </td>
          </tr>
          <tr> 
            <td width="150"><b>Partita IVA</b></td>
            <td> 
              <input type="text" name="PartitaIVA" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150">&nbsp;</td>
            <td>(Se non siete gi&agrave; Clienti Opengate spedite la
Visura Camerale
              al numero di Fax 0332/860781)</td>
          </tr>
          <tr> 
            <td width="150"><b>E-mail</b></td>
            <td> 
              <input type="text" name="EMail" size="47">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Password</b></td>
            <td> 
              <input type="password" name="Password" size="47" value="">
            </td>
          </tr>
          <tr> 
            <td width="150"><b>Controllo Password</b></td>
            <td> 
              <input type="password" name="CheckPassword" size="47">
            </td>
          </tr>
        </table>
        <table width="100%" border="0" cellspacing="0" cellpadding="0"
height="18">
          <tr> 
            <td><img src="../images/nulla.gif" width="1"
height="18"></td>
          </tr>
        </table>
      </td>
      <td valign="top" width="6">&nbsp;</td>
    </tr>
  </table>
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td valign="top" width="6"><img src="../images/nulla.gif"
width="6" height="1"></td>
      <td valign="top"><b>Informativa ai sensi dell'art. 10 della Legge
675/96</b><br>
        I dati personali acquisiti saranno utilizzati da parte di
Opengate e delle
        Societ&agrave; da essa controllate o partecipate, anche con
l'ausilio
        di mezzi elettronici. Ai sensi dell'art.13 della Legge 675/96,
ha il diritto
        di accedere ai propri dati chiedendone la correzione,
l'integrazione e,
        ricorrendone gli estremi, la cancellazione o il blocco. 
        <p> 
          <input type="checkbox" name="Autorizzo675" value="checkbox"
checked>
          Preso atto dell'informativa di cui sopra, autorizzo il
trattamento e
          la comunicazione dei miei dati da parte di Opengate e delle
Societ&agrave;
          da essa controllate o partecipate. </p>
        <input type="submit" name="Spedisci" value="Spedisci">
        <input type="reset" name="Reset" value="Reset">
      </td>
      <td valign="top" width="6">&nbsp;</td>
    </tr>
  </table>
  </form>
 </body>
 </html>
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.')) errors+='-
con:
if (obj[i].name=='EMail' && (obj[i].value.indexOf('@')<0 ||
obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.'))) errors+='-
Come dicevo, a occhio e croce. L'intero script non lo provo :)
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.'))
come ti ha detto il buon Catarsi, e' un problema di priorita', && ha
priorita' maggiore di ||
cosi' come e' scritto, vale
if ((obj[i].name=='EMail' && obj[i].value.indexOf('@')<0) ||
obj[i].value.indexOf('@')>obj[i].value.lastIndexOf('\.'))
in questo modo succedono le seguenti:
il campo che si chiama 'EMail' e non contiene la chiocciola da' errore;
ogni campo che contiene una chiocciola non seguita da un punto (e quindi
anche, ma non soltanto, il campo 'EMail') da' errore;
~~
artemis.alpeia
Il primo novanta per cento di un lavoro viene svolto nel novanta per cento
del tempo, il restante dieci per cento nel restante novanta per cento.
(Legge del novanta-novanta)