Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    3

    textbox con mask per data

    ciao,
    Ho trovato questo script per far si che al focus di una textbox compaiano i c aratteri __/__/____ per inserire la data.
    IL problema è che se inserisco una data (ad esempio 01/01/2000) e poi cancello alcuni caratteri, non me li fa più inserire. Potete aiutarmi a modificare il codice per correggere questo errore?

    codice:
    	<script language="javascript" type="text/javascript"> 
    
           // JScript File
    
           // Text Field add onfocus=javascript:DateControl('Textboxid')
    
           //it is automaticaly convert date Masked Date control
    
           //Created by M.Sathiskumar(16/04/2007)
    
           
    
           var c_txtid;
    
           var c_count=0;
    
           var Tchar;
    
           var bl_count=0;
    
           var astext="__/__/____"; //
    
           function DateControl(cnt_id)
    
           {
    
           c_txtid=cnt_id; 
    
           document.getElementById(cnt_id).style.textAlign="center"; 
    
           document.getElementById(cnt_id).setAttribute("maxlength",10)
    
           if(document.getElementById(cnt_id).value=="")
    
           document.getElementById(cnt_id).value="dd/mm/yyyy"; 
    
           document.getElementById(cnt_id).setAttribute("onblur",clear);
    
           document.getElementById(cnt_id).setAttribute("onkeydown",noNumbers);
    
           document.getElementById(cnt_id).maxlength="10"; 
    
           }
    
           function clear()
    
           {
    
           astext="__/__/____";//
    
           c_count=0;
    
           if (datechks()==1)
    
           {
    
           //alert("InValid Date");
    
           //document.write("InValid Date");
    
           document.getElementById(c_txtid).value="dd/mm/yyyy";
    
           document.getElementById(c_txtid).focus();
    
           }
    
           }
    
           
    
           
    
           function chk()
    
           {
    
           var ValidChars = "0123456789/_";
    
           var IsNumber=true;
    
           var Char; 
    
           var stext= document.getElementById(c_txtid).value;
    
           if (c_count==1) 
    
           { 
    
           //document.getElementById(c_txtid).value="__/__/____" 
    
           }
    
           
    
           
    
           for (i = 0; i < stext.length && IsNumber == true; i++) 
    
           { 
    
           Char = stext.charAt(i); 
    
           if (ValidChars.indexOf(Char) == -1) 
    
           {
    
           document.getElementById(c_txtid).value=stext.replace(Char,"")
    
           IsNumber = false; 
    
           }
    
           } 
    
           switch (Tchar){case '`': Tchar=0;break;case 'a': Tchar=1;break;case 'b': 
           Tchar=2;break;case 'c': Tchar=3;break;case 'd': Tchar=4;break;case 'e': 
           Tchar=5;break;case 'f': Tchar=6;break;case 'g': Tchar=7;break;case 'h': 
           Tchar=8;break;case 'i': Tchar=9;break;}
    
           switch (c_count)
    
           {
    
           case 1:
    
           if (Tchar<4)
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext; 
    
           }
    
           else
    
           {
    
           c_count--;
    
           }
    
           break;
    
           
    
           case 2: 
    
           if (Tchar<2 || stext.charAt(0)<3)
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           }
    
           else
    
           {
    
           c_count--;
    
           }
    
           break;
    
           
    
           case 3:
    
           if(Tchar<2) 
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           }
    
           else
    
           {
    
           c_count--;
    
           }
    
           break;
    
           
    
           case 4: 
    
           if (Tchar<3 || stext.charAt(3)=="0")
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           }
    
           else
    
           {
    
           c_count--;
    
           }
    
           break;
    
           
    
           case 5:
    
           if (Tchar==2 || Tchar==1 )
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           }
    
           else
    
           {
    
           c_count--;
    
           } 
    
           break;
    
           
    
           case 6:
    
           if (Tchar==9 || Tchar==0 )
    
           {
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           }
    
           else
    
           {
    
           c_count--;
    
           } 
    
           break;
    
           
    
           case 7:
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext;
    
           break;
    
           
    
           case 8:
    
           astext=astext.replace("_",Tchar)
    
           document.getElementById(c_txtid).value=astext; 
    
           break;
    
           
    
           case 9:
    
           c_count=0;
    
           astext="__/__/____";//
    
           document.getElementById(c_txtid).value="__/__/____" // 
    
           break;
    
           }
    
           
    
           
    
           return IsNumber ; 
    
           }
    
           
    
           function noNumbers()
    
           {
    
           var keynum
    
           var keychar
    
           var numcheck;
    
           if(window.event) // IE
    
           {
    
           keynum = event.keyCode
    
           }
    
           else if(event.which) // Netscape/Firefox/Opera
    
           {
    
           keynum = event.which
    
           }
    
           keychar = String.fromCharCode(keynum)
    
           Tchar=keychar;
    
           c_count++;
    
           numcheck = /\d/;
    
           //alert(keynum)
    
           if(keynum!=9 && ((keynum >47 && keynum <58) || (keynum >95 && keynum 
           <106) ) )
    
           {
    
           chk();
    
           }
    
           else
    
           return 0;
    
           return numcheck.test(keychar)
    
           
    
           }
    
           
    
           function datechks()
    
           { 
    
           var txtdate;
    
           var subtxt; 
    
           txtdate = document.getElementById(c_txtid).value;
    
           //alert(txtdate); //document.getElementById(txtid).value;
    
           txtdate=txtdate.replace(" ","") 
    
           if(txtdate.length > 0)
    
           {
    
           if(txtdate.length > 7 && txtdate.length < 11)
    
           { 
    
           subtxt =txtdate.substr(0,txtdate.indexOf("/"));
    
           txtdate=txtdate.substr(txtdate.indexOf("/")+1,txtdate.length); 
    
           if (subtxt >0 && subtxt < 32)
    
           { 
    
           subtxt =txtdate.substr(0,txtdate.indexOf("/"));
    
           txtdate=txtdate.substr(txtdate.indexOf("/")+1,txtdate.length); 
    
           if (subtxt >0 && subtxt < 13)
    
           { 
    
           if (txtdate.length > 3 )
    
           { 
    
           
    
           return 0;
    
           }
    
           } 
    
           }
    
           } 
    
           } 
    
           return 1;
    
           }
    
           
    
           
    
    		</script>
    
    ........
    
    <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 416px; POSITION: absolute; TOP: 128px" runat="server" onfocus="javascript:DateControl('TextBox1')" maxlength="10" Width="150"></asp:TextBox>

  2. #2
    lo script è troppo lungo da leggere

    io ti consiglio però l'utilizzo di un campo readonly e un calendarietto in javascript
    www.gext.it

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da tarini
    lo script è troppo lungo da leggere

    io ti consiglio però l'utilizzo di un campo readonly e un calendarietto in javascript

    Effettivamente il codice è troppo lungo da leggere e non invoglia di certo

    Poi non si capisce cosa sia quel <asp:TextBox id="TextBox1" runat="server"

    Poi, per curiosità, basta provare il codice, magari con IE7 e Firefox2, per vedere che proprio non funziona per niente :master: boh!.

    Io, dato che non vado troppo daccordo coi calendarietti (anche se sono una soluzione da non scartare ) suggerisco l'uso di un bel <input type="text", col suo controllo di validazione che, se ricordo bene, asp.net mette a disposizione: ma occhio ricordo che col framework 1.1 questi validatori sono scritti abbastanza male, in modo tale cioè, da fare sbellicare di risate chi conosce almeno un poco javascript :rollo:
    Ciao
    Pietro

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 © 2025 vBulletin Solutions, Inc. All rights reserved.