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>