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>

Rispondi quotando