Visualizzazione post con etichetta javascript. Mostra tutti i post
Visualizzazione post con etichetta javascript. Mostra tutti i post

lunedì 24 agosto 2015

Javascript usare Active-X per recuperare utente connesso

Questo script javascript (funziona soltanto su IE, non è il massimo a livello di sicurezza etc.) può essere utilizzato per recuperare lo username dell'utenza Windows connessa.

function getUserName() {
  try
  {
   var wshNetwork = new ActiveXObject("WScript.Network");
   var userName = wshNetwork.userName; 
   document.getElementById("myVal").value=userName;
   return userName;
  }
  catch(err){
   alert(err.message);
  }
 }



domenica 8 febbraio 2015

Javascript timer

Un contatore di secondi in Javascript:


<!DOCTYPE html>
<html>
<body>

<p>Script che starta un contatore:</p>

<p id="demo"></p>

<script>
var myVar=setInterval(function(){myTimer()},1000);
var cont=-1;
function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML =cont+myVar+" secondi trascorsi";
    cont=cont+1;
}
</script>

</body>
</html>


Risultato:

giovedì 9 gennaio 2014

Modificare il comportamento di default di una textarea sul click tasto enter

Di default una textarea associa l'evento submit del form al click sul tasto enter.
Per dare invece al tasto enter un altro significato è sufficiente agire sull'evento onkeyDown, in modo da aggiungere lo spazio al click sull'enter e prevenendo il comportamento di default.
Per aggiungere il testo a capo facciamo così: 

document.getElementById(event.target.id).innerHTML+="<br />";


Di seguito l'esempio in una  jsp:


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form >
 <textarea id="prova"  rows="10" cols="50"></textarea>

</form>
</body>
<script>

document.getElementById("prova").addEventListener("keydown",test,false);

function test(e) {
 
   
     if (e.keyCode == 13  &&  e.target=="[object HTMLTextAreaElement]"  ) {
      document.getElementById(event.target.id).innerHTML+="<br />";
      e.preventDefault();
      return false;
    }
}

</script>
</html>




lunedì 11 novembre 2013

Internet Explorer evitare messaggio sul window.close()

Con questo javascript si riesce ad evitare che richiamando il window.close() sia chiesta conferma all'utente della volontà di chiudere la finestra.
Il messaggio di conferma viene richiesto perchè c'è solo una finestra di tipo parent, per cui si avvisa in quanto chiuderla significa praticamente chiudere il browser.
Per evitare il problema ho trovato qui un trucco utile.
La funzione window.open ha la seguente firma:
window.open(URL,name,specs,replace)
I valori di name possono essere:
    _blank - Il caricamento dell'URL avviene in una nuova finestra
    _parent - Il caricamento dell'URL avviene nel frame parent
    _self - Il caricamento dell'url rimpiazza l'url corrente
    _top - Il caricamento dell'url rimpiazza qualsiasi frameset caricato
    name - il nome della finestra
Si imbroglia IE aprendo una pagina vuota superiore nella stessa pagina e quindi richiudendola.
Il valore true nel parametro replace indica che sostituisce il valore nella history.
Il parametro specs, qui lasciato vuoto, serve a specificare eventuali caratteristiche grafiche della finestra.
Così:

var win=window.open("","_top","","true");
win.opener=true;
win.close(); 


venerdì 19 luglio 2013

Trim in javascript

Per effettuare il trim di una stringa Javascript non ha funzioni built in.
Si può utilizzare la seguente funzione


function trim(s)
{ 
   return s.replace(/^\s+|\s+$/g, ''); 
}



Per testarla scrivi un testo e premi il pulsante, il testo trimmato è racchiuso tra i caratteri "*"


mercoledì 13 marzo 2013

showModalDialog problemi con IE 8

Ho verificato il seguente tipo di problema utilizzando lo showModalDialog soltanto con IE8, mentre tutto funzionava correttamente con Firefox e Chrome.
Il requisito era di aprire in modale una finestra e consentire al suo interno la navigazione mantenendo inibita la possibilità di cliccare sulla finestra padre.
Il problema che si verificava era che al primo click all'interno della finestra modale, invece di proseguire la navigazione normalmente, veniva aperta una nuova finestra , su cui poi si navigava correttamente.
C'era quindi la seguente situazione:
  1. Finestra di partenza, da cui si apre con showModalDialog l'applicazione che si vuole visualizzare in modale;
  2. Finestra dell'applicazione iniziale, sulla quale  clicco per navigare;
  3. Finestra aperta dall'interno della finestra modale.
Insomma  una situazione molto strana ed anomala nonchè, ripeto, esistente soltanto su Internet Explorer.
Navigando su internet ho trovato questo interessante articolo in merito che mi ha aiutato a risolvere il problema: http://jwcooney.com/2011/12/22/showmodaldialog-opens-a-new-window-on-submit-or-location-href/  .

Sintetizzando ci sono due strade da seguire:

  1. Nella pagina che si apre in modale inserire all'interno del tag head il seguente tag: <base target="_self" /> ;
  2. Effettuare il submit del form aperto in maniera modale via javascript utilizzando un tag anchor hidden nel form (<a href=”" id=”goLocation” style=”display:none;”> ).
Con il primo modo non mi ha funzionato, con il secondo invece si.
Quindi via javascript bisogna chiamare un metodo che imposti la proprietà href con l'action desiderata e quindi effettui il click.
Una cosa del tipo:

document.getElementById('goLocation').href = 'myAction.do?par1=x&par2=y';
document.getElementById('goLocation').click();

Si noti come  è necessario passare i parametri desiderati in querystring, per cui nel caso di form con molti campi ci sarà un lavoro pesante di javascript per settare i parametri corretti.

La mia paura a questo punto è stata quella di dover sostituire alla modalità standard di post del form sempre questa via tag anchor e javascript ma non è stato necessario, è bastato fare questa modifica solo nella pagina su cui si apre la finestra in modale, per il resto è rimasto tutto tale e quale.

giovedì 28 febbraio 2013

Javascript formattazione campi importo

Con questo script è possibile facilitare la scrittura degli importi nel formato italiano (il punto come separatore migliaia e virgola come separatore dei decimali).
L'evento va associato all' onkeyup dell'input type="text".

Il metodo è il seguente:


function numberFormat(obj)
   {
var nStr1 = obj.value;
var name  = obj.name;
var p = nStr1.split('.');
var nStr = "";
for(i = 0; i <p.length; i++)
nStr += p[i];
nStr += '';
x = nStr.split(',');
x1 = x[0];
x2 = x.length > 1 ? ',' + x[1] : '';
if (x2.length >3) x2 = x2.substring(0,3);
var rgx = /(\d+)(\d{3})/;
while(rgx.test(x1))
x1 = x1.replace(rgx, '$1' + '.' + '$2');
if (x2 == '' && x1.length >16) x2 = ',';
var a="document.getElementById('";
var b=name;
var c="').value=x1+x2";
eval(a+b+c);
}


Vediamo sotto un esempio concreto (provare a digitare un importo nella casella di testo):

sabato 26 gennaio 2013

Calendario con visualizzazione solo dei mesi

Ho avuto questa richiesta da parte di un cliente.
Visualizzare una coppia di date (Data da e Data a) sotto forma di calendario con la possibilità di scegliere esclusivamente il mese.
Oltre a questo il requisito prevedeva anche di impostare per il campo Data da il primo giorno del mese mentre per il campo Data a la fine del mese.
Speravo e credevo di trovare molte librerie javascript che facessero al caso mio e invece ne ho trovata soltanto una, la

jQuery.mtz.monthpicker

  disponibile qui
Un grazie all'autore, Luciano Costa!!

La libreria si appoggia a jquery, ed importa i 3 seguenti js (tutte scaricabili dall'url sopra linkata):

  •  jquery.min.js (versione 1.7.2);
  • jquery-ui.min.js (versione 1.8.18);
  • jquery.mtz.monthpicker.js .

Occorre anche importare una libreria di css, il jqueri-ui css framework 1.8.18.

Ho dovuto soltanto modificare lievemente la libreria jquery.mtz.monthpicker.js , per aggiungere una validazione che scrivesse la data da e data a secondo quanto richiesto. La versione di default infatti si limita  a scrivere mm/aaaa, a me invece serviva la data per esteso.
Ho aggiunto la mia funzione (chiamata checkData()) di formattazione nel metodo della libreria associato al click sull'elemento del calendario.

container.find('.mtz-monthpicker-month').bind('click', function () {
             
                var m = parseInt($(this).data('month'));
                if ($.inArray(m, settings.disabledMonths) < 0 ) {
                    settings.selectedMonth = $(this).data('month');
                    settings.selectedMonthName = $(this).text();
                    monthpicker.trigger('monthpicker-click-month', $(this).data('month'));
                    checkData();
                }
            });


La funzione checkData è la seguente:

function checkData(){
     var dataDa=document.getElementById("dataDa").value;
     if(dataDa.length==7){
     var dataDaFormattata="01/"+dataDa.substring(0);
     document.getElementById("dataDa").value=dataDaFormattata;
     }
     else
     {
      document.getElementById("dataDa").value="01"+dataDa.substring(2);
     }
     var dataA=document.getElementById("dataA").value;
     var mese="01";
     var anno="0000";
    if (dataA.length == 7) {
   mese = dataA.substring(0, 2);
   anno = dataA.substring(3, 7);
  } else {
    mese=dataA.substring(3,5);
    anno=dataA.substring(6,10);
  }
     var giorno='01';
     if(mese=='04' || mese=='06' || mese=='09' || mese=='11'){
      
      giorno='30';
     }
     else if(mese=='02'){
      if(isleap(anno)==true){
       giorno='29';
      }
      else
       {
      giorno='28';
       }
     }
     else
      {
        giorno='31';
      }
     
     document.getElementById("dataA").value=giorno+"/"+mese+"/"+anno;
    }

    function isleap(year)
    {
     var yr=year;
     if ((parseInt(yr)%4) == 0)
     {
      if (parseInt(yr)%100 == 0)
      {
        if (parseInt(yr)%400 != 0)
        {
      
        return false;
        }
        if (parseInt(yr)%400 == 0)
        {
       
        return true;
        }
      }
      if (parseInt(yr)%100 != 0)
      {
      
        return true;
      }
     }
     if ((parseInt(yr)%4) != 0)
     {
       
        return false;
     } 
    }


Un'ultima particolarità è che le due date devono essere precaricate con un valore che gli arriva dalla sessione e quindi ogni data ha una sua lista di caricamento diversa.
Ecco la jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test sulle date</title>
  <script src='js/jquery.min.js'></script> 
    <script src='js/jquery-ui.min.js'></script>
    <script type="text/javascript" src="js/jquery.mtz.monthpicker.js"></script>
    <link rel='stylesheet' href='css/jquery-ui.css'>
</head>

  <style type="text/css">
      td.mtz-monthpicker-month {
        text-align:center;
      }
      select.mtz-monthpicker:focus {
        outline: none;
      }
    </style>
<body>
<%
   String dataDa=(String)request.getSession().getAttribute("DATA_DA");
   String dataA=(String)request.getSession().getAttribute("DATA_A");
%>
<table align="center">
<tr>
<td>
Data da:
</td>
<td>
<input id="dataDa" class="mtz-monthpicker-widgetcontainer" value="<%=dataDa %>" readonly="readonly" type="text">
<img border="0"  src="images/calendar.gif" onclick="javascript:document.getElementById('dataDa').focus();" >
</td>
<td>Data a: </td>
<td>
<input id="dataA" class="mtz-monthpicker-widgetcontainer" value="<%=dataA%>" readonly="readonly" type="text">
<img border="0"  src="images/calendar.gif" onclick="javascript:document.getElementById('dataA').focus();">
</td>
</tr>
</table>

<script>
optionsDa = {
    pattern: 'mm/yyyy', 
    selectedYear: <%=Integer.parseInt((String)request.getSession().getAttribute("ANNO_DA"))%>,
    startYear: 2008,
    finalYear: 2050,
    monthNames: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
};
optionsA = {
     pattern: 'mm/yyyy', 
     selectedYear: <%=Integer.parseInt((String)request.getSession().getAttribute("ANNO_A"))%>,
     startYear: 2008,
     finalYear: 2050,
     monthNames: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
 };
$('#dataDa').monthpicker(optionsDa);
$('#dataA').monthpicker(optionsA);
</script>
</body>
</html>


mercoledì 21 novembre 2012

Javascript inibire scrittura in text area al combo change

Questa operazione apparentemente banale nasconde una piccola insidia con Internet
Explorer.
La scelta migliore rimane quella di utilizzare un framework Javascript come Jquery ma se tale scelta non fosse possibile....
Con Firefox e Chrome si può usare il costrutto:

 document.getElementById("idCampo").setAttribute("readonly","readonly");



Con Internet Explorer tale istruzione non funziona, e bisogna utilizzare

document.getElementById("idCampo").readOnly=true;

Di seguito il codice di un esempio, abbiamo una combo al cui evento onchange per un particolare codice si inibisce la scrittura nella textbox sottostante.


<html>

<head>

<script>
function disabilitaAbilita(){
if(document.getElementById("test").value=="1")
{
document.getElementById("firstName").value="Scrittura inibita!!!!";
//document.getElementById("firstName").setAttribute("readonly","readonly");
document.getElementById("firstName").readOnly=true;
}
else
{
document.getElementById("firstName").value="";
//document.getElementById("firstName").removeAttribute("readonly");
document.getElementById("firstName").readOnly=false;
}
}
</script>
</head>
<body onload="disabilitaAbilita()">

<form > Scelta

<SELECT name="example" id="test" onchange="disabilitaAbilita()">

<OPTION selected value="1">UNO </OPTION>

<OPTION  value="2">DUE</OPTION>

<OPTION value="3">TRE</OPTION>

<OPTION value="4">QUATTRO</OPTION>

</SELECT>

<br>

Testo<textarea type="text" name="firstname" id="firstName">

</form>

</body>

</html>
Ecco l'esempio renderizzato:
Scelta

Testo

domenica 5 agosto 2012

Javascript formattazione date

Questo script mi è stato utile presso un utente che nelle form di inserimento date aveva utilizzava velocemente il tastierino numerico, scrivendo quindi le date senza il separatore "/".
I controlli di congruenza della data venivano sempre svolti lato server, per evitare che il javascript potesse essere "manomesso" e quindi mandare dati sporchi in base dati.
Tuttavia era molto utile per l'utente scrivere le date in fretta e fare in modo che in automatico la procedura mettesse il carattere di separatore.
Lo script è questo:

function aggiustaData(){

var el=document.getElementById("txtData").value;

if(el.length==8){
    var giorno=el.substring(0,2);
    var mese=el.substring(2,4);
    var anno=el.substring(4,8);
    document.getElementById("txtData").value=giorno+"/"+mese+"/"+anno;
    }
    }

L'evento è richiamato all'onblur della textbox e scatta soltanto se la lunghezza del campo è di 8 caratteri.
La textbox è quindi:

<input type="text" name="txtData" id="txtData" size="15" maxlength="10" onblur="aggiustaData()" />

Di seguito l'esempio (digitare la data e poi uscire dalla textbox)


Inserire data :

martedì 3 luglio 2012

Javascript focus automatico su textbox successiva


Script js per ottenere che dopo aver digitato i caratteri necessari in una textbox ci sia il passaggio del focus alla textbox successiva.
Esempio : textbox per l'ora e textbox per i minuti

Il metodo da utilizzare è l'onkeyup.

function verificaFocus(){
var ora=document.getElementById("txtOra");

 if(ora.value.length==2){
 document.getElementById("txtMinuto").focus();
 }
}

Qui sotto si può testare il codice
Ora:    Minuti:

lunedì 6 febbraio 2012

Javascript scorporo Iva

Funzioncina per calcolare scorporo iva in javascript, ci sono anche 2 metodi di utilità roundNumber per l'arrotondamento  e parseDouble per effettuare il parsing a Double:

<script language="javascript">
function calcolaScorporo(){

 var iva=parseDouble(document.getElementById("txtIva").value);
  var importoTotale=parseDouble(document.getElementById("txtImporto").value);
 if(!isNaN(iva) && !isNaN(importoTotale)){
 iva=iva/100;
 iva+=1;
 var sc=importoTotale/iva;
 sc=roundNumber(sc,2);
 document.getElementById("txtImportoOriginale").value=sc;
 document.getElementById("txtIvaScorporata").value=roundNumber(importoTotale-sc,2);
 }
 else
 {
    alert('Inserire valori numerici!!');
   }
}


function parseDouble(value){
  if(typeof value == "string") {
    value = value.match(/^-?\d*/)[0];
  }
  return !isNaN(parseInt(value)) ? value * 1 : NaN;
}


function roundNumber(number, digits) {
            var multiple = Math.pow(10, digits);
            var rndedNum = Math.round(number * multiple) / multiple;
            return rndedNum;
        }

</script>


Di seguito vediamo un form che richiama il javascript:



IMPORTO TOTALE PAGATO:
IVA (%):
IVA PAGATA:
IMPORTO ORIGINARIO:

sabato 21 gennaio 2012

Javascript funzione setTimeout

La funzione setTimeout in Javascript consente di eseguire un determinato codice javascript con un intervallo specificato in millisecondi.
Vediamo un esempio, preso dalla sezione tips and tricks della rivista Io Programmo di questo mese.
Abbiamo una semplice casella di testo e un bottone, quando premiamo il bottone quello che abbiamo scritto sarà cancellato carattere per carattere con un intervallo di mezzo secondo tra un carattere e l'altro, simulando la cancellazione manuale.
Il codice del metodo js è il seguente:

function deleteChar(t){
var testo=document.getElementById(t);

var inside=testo.value;

if(inside){
      
    testo.value=inside.substring(0,inside.length-1);
        setTimeout("deleteChar("+"'"+t+"'"+")",500);
}
}

Vediamolo all'opera:


Scrivi testo:

mercoledì 14 dicembre 2011

Limitare via javascript il numero caratteri inseriti su textarea

Con questo javascript è possibile data una textarea limitare l'input dei caratteri inseriti avvisando l'utente di quanti caratteri stia inserendo (esponendogli il messaggio in una input text hidden).

Il javascript è il seguente:

function contaCaratteri(area, field, max){
    var cont= area.value.length;
    if (cont > max){
        area.value = area.value.substr(0, max);
       
        document.getElementById(field).value = 'Massimo ' + max + ' caratteri!';
      
       
       
      
    }else{
        if(cont>1){
        document.getElementById(field).value = 'Inseriti ' + cont + ' caratteri!';
        }
        else
        {
            document.getElementById(field).value = 'Inserito ' + cont + ' carattere!';
        }
    }
}


L'esempio HTML è questo (digitare all'interno della textarea):



martedì 29 novembre 2011

Redirect automatico da una pagina con conto alla rovescia

E' molto utile utilizzare il tag
<META http-equiv="Refresh" content="10;URL=http://www.nuovaurl.it">
dentro la sezione <head> dell'html, in modo da effettuare un redirezionamento a tempo (in questo caso 10 secondi) di una pagina Web.

Vediamo come abbinarlo al classico "conto alla rovescia", supponiamo di avere una pagina che ci informi che avverrà la redirezione al sito www.corriere.it dopo X secondi e di avere un informazione sulla pagina in merito a quanti secondi mancano alla redirect.
Per ottenere questo risultato si utilizza nell'onload del body della pagina il metodo setInterval, che accetta 2 parametri:
  1. La funzione javascript da richiamare;
  2. Il tempo in millisecondi che deve trascorrere tra una chiamata e l'altra.
Vediamo il codice HTML e Javascript di questo semplice esempio:

<html>

<head>
<title>Pagina di autorefresh</title>
<META http-equiv="Refresh" content="10;URL=http://www.corriere.it">
</head>
<body onload="javascript:setInterval('go()',1000)">
Sarai redirezionato al sito in
<div id="mioDiv">10
</div> secondi
</body>
</html>

<script language="javascript">
function go(){
var valore=parseInt(document.getElementById("mioDiv").innerHTML);
valore=valore-1;
document.getElementById("mioDiv").innerHTML=valore;

}
</script>


domenica 20 novembre 2011

Javascript show/hide div

Spesso è utile visualizzare del testo statico on demand su pagina Web, il classico esempio è quello della visualizzazione di informazioni cliccando su un pulsante e poi farlo scomparire di nuovo ricliccando.
Il metodo Javascript è il seguente:

function showhide(id) {
    var state = document.getElementById(id).style.display;
        if (state == 'block') {
            document.getElementById(id).style.display = 'none';
            document.getElementById('spiega').value="Mostra Guida";
        } else {
            document.getElementById(id).style.display = 'block';
           
            document.getElementById('spiega').value="Nascondi Guida";
           
        }
    }

 Al caricamento vogliamo che non si veda il testo del div, quindi definiamo

<style type="text/css">
<!--

#spiegazioni {
   
    display: none;
}
-->
</style>

Sulla pagina HTML abbiamo

<form name="caricaBilancio" id="caricaBilancio" ENCTYPE="multipart/form-data" action="CaricaBilancio" method="post">

<input class="inputButton" id="spiega"    type="button" name="Guida"  title="Guida"  value="Mostra guida" onclick="javascript:showhide('spiegazioni')"/>

<div id="spiegazioni">
/// qui il nostro testo
Prova prova
</div>
Vediamo l'esempio cliccando sul pulsante


// qui il nostro testo Prova prova

mercoledì 12 ottobre 2011

Javascript aggiungere un link ai preferiti

Purtroppo le istruzioni per aggiungere un link ai preferiti via javascript cambiano da Browser a browser.
Il seguente metodo javascript si occupa di effettuare l'operazione sui due browser più utilizzati, Internet Explorer e Firefox.

Il codice è il seguente

function addFav(link,name)
{
    if (window.sidebar) { // Mozilla Firefox Bookmark
                      window.sidebar.addPanel(name, link,"");
                         } else if( window.external ) 

{ // IE Favorite
        window.external.AddFavorite( link, name);

}
}


Di seguito vediamo un esempio html:

Sito inter
Corriere della Sera
Repubblica




martedì 26 luglio 2011

Generare password random in javascript


La funzione accetta in input una lunghezza e quindi genera valori casuali scegliendoli tra una lista di caratteri prestabiliti.
Esempio:


function randomPassword(length)
{
  chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890/=!";
  pass = "";
  for(x=0;x<length;x++)
  {
    i = Math.floor(Math.random() * 65);
    pass += chars.charAt(i);
  }
  return pass;
}



Per testare l’input utente(vogliamo che sia un intero senza virgola) utilizziamo la function isNumeric così definita (cicliamo tra i caratteri per riscontrare che ogni carattere sia valido):


function IsNumeric(sText)

{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;


   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;
  
   }






La funzione richiamata dal form al click del bottone sarà quindi:

function scriviPassword(){
var length=document.getElementById("txtLength").value;

if(IsNumeric(length))
{
 if(parseInt(length)>6){
 var pass=randomPassword(length);

 document.getElementById("divPassword").innerHTML=pass;
 }
 else
 {
    alert('Attenzione una password deve essere lunga almeno 6 caratteri!!');
   }
}
else
{
alert('Errore, la lunghezza specificata non è un numero!!!');


}

}


 Di seguito l'esempio completo HTML:
Inserire lunghezza password:

giovedì 21 luglio 2011

Validare un indirizzo email in Javascript

Per validare la correttezza formale di un indirizzo email ho utilizzato il seguente codice javascript:

function echeck(str) {
    var msg="Attenzione indirizzo e-mail non valido";
      var at="@";
      var dot=".";
      var lat=str.indexOf(at);
      var lstr=str.length;
      var ldot=str.indexOf(dot);
      if (str.indexOf(at)==-1){
         alert(msg);
         return false;
      }

      if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
         alert(msg);
         return false;
      }

      if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
          alert(msg);
          return false;
      }

       if (str.indexOf(at,(lat+1))!=-1){
          alert(msg);
          return false;
       }

       if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
          alert(msg);
          return false;
       }

       if (str.indexOf(dot,(lat+2))==-1){
          alert(msg);
          return false;
       }
     
       if (str.indexOf(" ")!=-1){
          alert(msg);
          return false;
       }

             return true;  
                         
}


Subito sotto vediamo un esempio pratico di applicazione, digitare l’indirizzo mail e premere il tasto “Testa”.





mercoledì 20 luglio 2011

Controllo check digit codice fiscale in javascript

Può essere utile il seguente script js per verificare la correttezza del codice fiscale.
Il codice controlla la congruità del carattere di controllo, la cui ultima cifra si deduce secondo l’algoritmo descritto qui .


function validaCodiceFiscale(cf)
      {
          var validi, i, s, set1, set2, setpari, setdisp;
          if( cf == '' )  return '';
          cf = cf.toUpperCase();
          if( cf.length != 16 )
              return false;
          validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
          for( i = 0; i < 16; i++ ){
              if( validi.indexOf( cf.charAt(i) ) == -1 )
                  return false;
          }
          set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
          set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
          setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
          setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
          s = 0;
          for( i = 1; i <= 13; i += 2 )
              s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
          for( i = 0; i <= 14; i += 2 )
              s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
          if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
              return false;
          return true;
      }



Di seguito vediamo un esempio di applicazione di questo script su un form html (digitare il codice fiscale nella text box e quindi premere il pulsante "Testa" per la validazione) :