Cheer 发表于 2007-4-28 11:11:20

综合类固定输入框中字符格式

把下列代码加到网页的<body></body>标签之间 从google下载我的照片管理软件
要完成此效果需要三个步骤

第一步:把如下代码加入到<head>区域中

<script language="javascript">

<!-- begin
// check browser version
var isnav4 = false, isnav5 = false, isie4 = false
var strseperator = "/";
// if you are using any java validation on the back side you will want to use the / because
// java date validations do not recognize the dash as a valid date separator.
var vdatetype = 3; // global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm(unable to do date check at this time)
//                3 = dd/mm/yyyy
var vyeartype = 4; //set to 2 or 4 for number of digits in the year for netscape
var vyearlength = 2; // set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // set the error code to a default of zero
if(navigator.appname == "netscape") {
if (navigator.appversion < "5") {
isnav4 = true;
isnav5 = false;
}
else
if (navigator.appversion > "4") {
isnav4 = false;
isnav5 = true;
   }
}
else {
isie4 = true;
}
function dateformat(vdatename, vdatevalue, e, datecheck, datetype) {
vdatetype = datetype;
// vdatename = object name
// vdatevalue = value in the field being checked
// e = event
// datecheck
// true= verify that the vdatevalue is a valid date
// false = format values being entered into vdatevalue only
// vdatetype
// 1 = mm/dd/yyyy
// 2 = yyyy/mm/dd
// 3 = dd/mm/yyyy
//enter a tilde sign for the first number and you can check the variable information.
if (vdatevalue == "~") {
alert("appversion = "+navigator.appversion+" \nnav. 4 version = "+isnav4+" \nnav. 5 version = "+isnav5+" \nie version = "+isie4+" \nyear type = "+vyeartype+" \ndate type = "+vdatetype+" \nseparator = "+strseperator);
vdatename.value = "";
vdatename.focus();
return true;
}
var whichcode = (window.event) ? e.which : e.keycode;
// check to see if a seperator is already present.
// bypass the date if a seperator is present and the length greater than 8
if (vdatevalue.length > 8 && isnav4) {
if ((vdatevalue.indexof("-") >= 1) || (vdatevalue.indexof("/") >= 1))
return true;
}
//eliminate all the ascii codes that are not valid
var alphacheck = " abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz/-";
if (alphacheck.indexof(vdatevalue) >= 1) {
if (isnav4) {
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
}
else {
vdatename.value = vdatename.value.substr(0, (vdatevalue.length-1));
return false;
   }
}
if (whichcode == 8) //ignore the netscape value for backspace. ie has no value
return false;
else {
//create numeric string values for 0123456789/
//the codes provided include both keyboard and keypad values
var strcheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strcheck.indexof(whichcode) != -1) {
if (isnav4) {
if (((vdatevalue.length < 6 && datecheck) || (vdatevalue.length == 7 && datecheck)) && (vdatevalue.length >=1)) {
alert("错误的日期\n请重新输入");
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
}
if (vdatevalue.length == 6 && datecheck) {
var mday = vdatename.value.substr(2,2);
var mmonth = vdatename.value.substr(0,2);
var myear = vdatename.value.substr(4,4)
//turn a two digit year into a 4 digit year
if (myear.length == 2 && vyeartype == 4) {
var mtoday = new date();
//if the year is greater than 30 years from now use 19, otherwise use 20
var checkyear = mtoday.getfullyear() + 30;
var mcheckyear = '20' + myear;
if (mcheckyear >= checkyear)
myear = '19' + myear;
else
myear = '20' + myear;
}
var vdatevaluecheck = mmonth+strseperator+mday+strseperator+myear;
if (!datevalid(vdatevaluecheck)) {
alert("错误的日期\n请重新输入");
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
}
return true;
}
else {
// reformat the date for validation and set date type to a 1
if (vdatevalue.length >= 8&& datecheck) {
if (vdatetype == 1) // mmddyyyy
{
var mday = vdatename.value.substr(2,2);
var mmonth = vdatename.value.substr(0,2);
var myear = vdatename.value.substr(4,4)
vdatename.value = mmonth+strseperator+mday+strseperator+myear;
}
if (vdatetype == 2) // yyyymmdd
{
var myear = vdatename.value.substr(0,4)
var mmonth = vdatename.value.substr(4,2);
var mday = vdatename.value.substr(6,2);
vdatename.value = myear+strseperator+mmonth+strseperator+mday;
}
if (vdatetype == 3) // ddmmyyyy
{
var mmonth = vdatename.value.substr(2,2);
var mday = vdatename.value.substr(0,2);
var myear = vdatename.value.substr(4,4)
vdatename.value = mday+strseperator+mmonth+strseperator+myear;
}
//create a temporary variable for storing the datetype and change
//the datetype to a 1 for validation.
var vdatetypetemp = vdatetype;
vdatetype = 1;
var vdatevaluecheck = mmonth+strseperator+mday+strseperator+myear;
if (!datevalid(vdatevaluecheck)) {
alert("错误的日期\n请重新输入");
vdatetype = vdatetypetemp;
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
}
vdatetype = vdatetypetemp;
return true;
}
else {
if (((vdatevalue.length < 8 && datecheck) || (vdatevalue.length == 9 && datecheck)) && (vdatevalue.length >=1)) {
alert("错误的日期\n请重新输入");
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
         }
      }
   }
}
else {
// non isnav check
if (((vdatevalue.length < 8 && datecheck) || (vdatevalue.length == 9 && datecheck)) && (vdatevalue.length >=1)) {
alert("错误的日期\n请重新输入");
vdatename.value = "";
vdatename.focus();
return true;
}
// reformat date to format that can be validated. mm/dd/yyyy
if (vdatevalue.length >= 8 && datecheck) {
// additional date formats can be entered here and parsed out to
// a valid date format that the validation routine will recognize.
if (vdatetype == 1) // mm/dd/yyyy
{
var mmonth = vdatename.value.substr(0,2);
var mday = vdatename.value.substr(3,2);
var myear = vdatename.value.substr(6,4)
}
if (vdatetype == 2) // yyyy/mm/dd
{
var myear = vdatename.value.substr(0,4)
var mmonth = vdatename.value.substr(5,2);
var mday = vdatename.value.substr(8,2);
}
if (vdatetype == 3) // dd/mm/yyyy
{
var mday = vdatename.value.substr(0,2);
var mmonth = vdatename.value.substr(3,2);
var myear = vdatename.value.substr(6,4)
}
if (vyearlength == 4) {
if (myear.length < 4) {
alert("错误的日期\n请重新输入");
vdatename.value = "";
vdatename.focus();
return true;
   }
}
// create temp. variable for storing the current vdatetype
var vdatetypetemp = vdatetype;
// change vdatetype to a 1 for standard date format for validation
// type will be changed back when validation is completed.
vdatetype = 1;
// store reformatted date to new variable for validation.
var vdatevaluecheck = mmonth+strseperator+mday+strseperator+myear;
if (myear.length == 2 && vyeartype == 4 && datecheck) {
//turn a two digit year into a 4 digit year
var mtoday = new date();
//if the year is greater than 30 years from now use 19, otherwise use 20
var checkyear = mtoday.getfullyear() + 30;
var mcheckyear = '20' + myear;
if (mcheckyear >= checkyear)
myear = '19' + myear;
else
myear = '20' + myear;
vdatevaluecheck = mmonth+strseperator+mday+strseperator+myear;
// store the new value back to the field.this function will
// not work with date type of 2 since the year is entered first.
if (vdatetypetemp == 1) // mm/dd/yyyy
vdatename.value = mmonth+strseperator+mday+strseperator+myear;
if (vdatetypetemp == 3) // dd/mm/yyyy
vdatename.value = mday+strseperator+mmonth+strseperator+myear;
}
if (!datevalid(vdatevaluecheck)) {
alert("错误的日期\n请重新输入");
vdatetype = vdatetypetemp;
vdatename.value = "";
vdatename.focus();
return true;
}
vdatetype = vdatetypetemp;
return true;
}
else {
if (vdatetype == 1) {
if (vdatevalue.length == 2) {
vdatename.value = vdatevalue+strseperator;
}
if (vdatevalue.length == 5) {
vdatename.value = vdatevalue+strseperator;
   }
}
if (vdatetype == 2) {
if (vdatevalue.length == 4) {
vdatename.value = vdatevalue+strseperator;
}
if (vdatevalue.length == 7) {
vdatename.value = vdatevalue+strseperator;
   }
}
if (vdatetype == 3) {
if (vdatevalue.length == 2) {
vdatename.value = vdatevalue+strseperator;
}
if (vdatevalue.length == 5) {
vdatename.value = vdatevalue+strseperator;
   }
}
return true;
   }
}
if (vdatevalue.length == 10&& datecheck) {
if (!datevalid(vdatename)) {
// un-comment the next line of code for debugging the datevalid() function error messages
//alert(err);
alert("错误的日期\n请重新输入");
vdatename.focus();
vdatename.select();
   }
}
return false;
}
else {
// if the value is not in the string return the string minus the last
// key entered.
if (isnav4) {
vdatename.value = "";
vdatename.focus();
vdatename.select();
return false;
}
else
{
vdatename.value = vdatename.value.substr(0, (vdatevalue.length-1));
return false;
         }
      }
   }
}
function datevalid(objname) {
var strdate;
var strdatearray;
var strday;
var strmonth;
var stryear;
var intday;
var intmonth;
var intyear;
var boofound = false;
var datefield = objname;
var strseparatorarray = new array("-"," ","/",".");
var intelementnr;
// var err = 0;
var strmontharray = new array(12);
strmontharray = "jan";
strmontharray = "feb";
strmontharray = "mar";
strmontharray = "apr";
strmontharray = "may";
strmontharray = "jun";
strmontharray = "jul";
strmontharray = "aug";
strmontharray = "sep";
strmontharray = "oct";
strmontharray = "nov";
strmontharray = "dec";
//strdate = datefield.value;
strdate = objname;
if (strdate.length < 1) {
return true;
}
for (intelementnr = 0; intelementnr < strseparatorarray.length; intelementnr++) {
if (strdate.indexof(strseparatorarray) != -1) {
strdatearray = strdate.split(strseparatorarray);
if (strdatearray.length != 3) {
err = 1;
return false;
}
else {
strday = strdatearray;
strmonth = strdatearray;
stryear = strdatearray;
}
boofound = true;
   }
}
if (boofound == false) {
if (strdate.length>5) {
strday = strdate.substr(0, 2);
strmonth = strdate.substr(2, 2);
stryear = strdate.substr(4);
   }
}
//adjustment for short years entered
if (stryear.length == 2) {
stryear = '20' + stryear;
}
strtemp = strday;
strday = strmonth;
strmonth = strtemp;
intday = parseint(strday, 10);
if (isnan(intday)) {
err = 2;
return false;
}
intmonth = parseint(strmonth, 10);
if (isnan(intmonth)) {
for (i = 0;i<12;i++) {
if (strmonth.touppercase() == strmontharray.touppercase()) {
intmonth = i+1;
strmonth = strmontharray;
i = 12;
   }
}
if (isnan(intmonth)) {
err = 3;
return false;
   }
}
intyear = parseint(stryear, 10);
if (isnan(intyear)) {
err = 4;
return false;
}
if (intmonth>12 || intmonth<1) {
err = 5;
return false;
}
if ((intmonth == 1 || intmonth == 3 || intmonth == 5 || intmonth == 7 || intmonth == 8 || intmonth == 10 || intmonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intmonth == 4 || intmonth == 6 || intmonth == 9 || intmonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intmonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (leapyear(intyear) == true) {
if (intday > 29) {
err = 9;
return false;
   }
}
else {
if (intday > 28) {
err = 10;
return false;
      }
   }
}
return true;
}
function leapyear(intyear) {
if (intyear % 100 == 0) {
if (intyear % 400 == 0) { return true; }
}
else {
if ((intyear % 4) == 0) { return true; }
}
return false;
}
//end -->
</script>


第二步:把如下代码加入到<body>区域中

<form name=datetest>
<table border=0 width=400 align="center">
    <tr>
      <td>
      <table align=center border=1 width=400>
          <tr>
            <td bgcolor=#000000 width=75%>
            <div align="center"><font color="#33ff33">格式一 - mm/dd/yyyy</font></div>
            </td>
            <td>
            <input type="text" name="testdateformat1" size='10' maxlength="10" onfocus="javascript:vdatetype='1'" onkeyup="dateformat(this,this.value,event,false,'1')" onblur="dateformat(this,this.value,event,true,'1')">
            </td>
          </tr>
      </table>
      </td>
    </tr>
    <tr>
      <td>
      <table align=center border=1 width=400>
          <tr>
            <td bgcolor=#000000 width=75%>
            <div align="center"><font color="#33ff33">格式二 - yyyy/mm/dd</font></div>
            </td>
            <td>
            <input type="text" name="testdateformat3" size='10' maxlength="10" onfocus="javascript:vdatetype='2'" onkeyup="dateformat(this,this.value,event,false,'2')" onblur="dateformat(this,this.value,event,true,'2')">
            </td>
          </tr>
      </table>
      </td>
    </tr>
    <tr>
      <td>
      <table align=center border=1 width=400>
          <tr>
            <td bgcolor=#000000 width=75%>
            <div align="center"><font color="#33ff33">格式三 - dd/mm/yyyy</font></div>
            </td>
            <td>
            <input type="text" name="testdateformat5" size='10' maxlength="10" onfocus="javascript:vdatetype='3'" onkeyup="dateformat(this,this.value,event,false,'3')" onblur="dateformat(this,this.value,event,true,'3')">
            </td>
          </tr>
      </table>
      </td>
    </tr>
</table><div align="center"></div>
</form>


第三步:把“onload="document.datetest.testdateformat1.focus()"”加在<body>标记里
例如:<body onload="document.datetest.testdateformat1.focus()">
页: [1]
查看完整版本: 综合类固定输入框中字符格式