Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    controllo data formato italiano

    ciao a tutti,

    ho del codice js che dovrebbe effettuarmi il conrollo di un form (un input) x l'inserimento della data solo in formato italiano

    codice:
    function controlla()
       {
       obj=document.nomeform.requiredandata.value.replace(/[^\d]/g,"0");;
       
       gg=obj.substr(0,2)
       mm=obj.substr(3,2);
       aa=obj.substr(6,4);
       
       strdata=gg+"/"+mm+"/"+aa;
       
       data = new Date(aa,mm-1,gg);
       daa=data.getFullYear().toString();
       dmm=(data.getMonth()+1).toString();
          dmm=dmm.length==1?"0"+dmm:dmm
       dgg=data.getDate().toString();
          dgg=dgg.length==1?"0"+dgg:dgg
       dddata=dgg+"/"+dmm+"/"+daa
       if (dddata!=strdata)
          {
          alert("Check insert date; True format: dd/mm/yyyy");
    	 
    	   document.nomeform.requiredandata.value="";
    	    document.nomeform.requiredandata.focus();
          }
       }
    ho 2 grossi problemio in proposito:

    1) se scrivo 24092008 lo accetta comunque
    2) se scrivo 2400902008 lo accetta lo stesso

    io vorrei che accettasse "solo" date del tipo:
    01/10/2008

    mi dareste un amano gentilmente?

    grazie.

  2. #2
    prova con una RegExpr:

    var dataExpr = /\d{2}\/\d{2}\/\d{4}/;

    dataExpr.test(data) == true se valida false altrimenti

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    scusa max quel pòche ne capisco, porei anche scrivere 00112000 giusto?

    io vorrei che si nserisse una data reale, in formato italiano e separata da "/"

    Perdonami,
    saresti così gentile da farmi un esempio più concreto...
    scusa ma js lo conosco veramente poco :-(


    grazie mille

  4. #4
    no decisamente, se scrivo 20022008 non lo accetta, se usi quella Regular Expression.
    Ti faccio un esempio del ritorno di quella chiamata test:

    data = 2/5/08 false
    data = 20/8/2008 false
    data = 20/05/08 false
    data = 20/05/2008 true
    data = 20052008 false
    data = 20-05-2008 false

    Accetta solo in formato dd/mm/yyyy obbligatoriamente a 2 cifre le prime due ed a 4 le ultime

  5. #5
    una funzione di controllo potrebbe essere:

    Codice PHP:
    var dataExpr = /\d{2}\/\d{2}\/\d{4}/;
    function 
    controlla(){
       
    obj=document.nomeform.requiredandata.value;
       if(!
    dataExpr.test(obj))
       {
           
    alert("Check insert date; True format: dd/mm/yyyy");
          
    document.nomeform.requiredandata.value="";
          
    document.nomeform.requiredandata.focus();
       }


  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    ..perdonami ma a me nn funziona :-(
    codice:
    
    <SCRIPT>
    
    
      var dataExpr = /d{2}/d{2}/d{4}/;
    function controlla1(){
       obj=document.nomeform.requiredandata.value;
       if(!dataExpr.test(obj))
       {
           alert("Check insert date; True format: dd/mm/yyyy");
          document.nomeform.requiredandata.value="";
          document.nomeform.requiredandata.focus();
       }
    }
    
    </SCRIPT>

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    risolto

    il problema era questo:

    var dataExpr = /d{2}/d{2}/d{4}/;

    invece di:

    var dataExpr = /\d{2}\/\d{2}\/\d{4}/;

    grazie mille!

  8. #8
    è quel dannato tag [PHP] che toglie le \

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.