只有 vbscript的,没写js
<script language="VBScript">
function SYearblur(frmname)
BSYear = frmname.SYear.value
if (not isNumeric(BSYear)) and BSYear <> ""then
msgbox "请输入正确年份!"
frmname.SYear.value = ""
frmname.SYear.focus
exit function
elseif BSYear = "" then
exit function
end if
BSYear = cint(BSYear)
if BSYear < 2000 then
msgbox "现在都已经2001年啦!"
frmname.SYear.value = ""
frmname.SYear.focus
exit function
end if
if BSYear > 2100 then
msgbox "现在已经23世纪啦?这个版本已经不能用了,你再编一个新版本的吧!"
frmname.SYear.value = ""
frmname.SYear.focus
end if
end functionfunction SMonthfocus(frmname)
if frmname.SYear.value = "" then
frmname.SYear.focus
end if
end function
function SMonthblur(frmname)
BSMonth = frmname.SMonth.value
if (not isNumeric(BSMonth)) or BSMonth = "" then
frmname.SMonth.value = ""
exit function
end if
BSMonth = cint(BSMonth)
if BSMonth < 1 then
frmname.SMonth.value = ""
exit function
end if
if BSMonth > 12 then
frmname.SMonth.value = ""
exit function
end if
frmname.SMonth.value = BSMonth
end functionfunction SYearchange(frmname)
frmname.SDay.value = ""
end functionfunction SMonthchange(frmname)
frmname.SDay.value = ""
end functionfunction SDayfocus(frmname)
if frmname.SMonth.value="" then 
frmname.SMonth.focus
end if
end functionfunction SDayblur(frmname)
d = frmname.SDay.value
if (not isNumeric(d)) or d = "" then
   frmname.SDay.value = ""
   exit function
end if
d = cint(d)
m = frmname.SMonth.value
y = frmname.SYear.valueMaxD = DaysInMonth(m,y)
if d < 1 or d > MaxD then
frmname.SDay.value = ""
exit function
end if
frmname.SDay.value = d
end functionfunction DaysInMonth(m,y)
if isNumeric(m) and m <> "" and isNumeric(y) and y <> "" then
 m = cint(m)
 y = cint(y) if m>0 and m<13 and y>1999 and y<2101 then
 pn = y mod 4
 select case m
 case 1,3,5,7,8,10,12
 DaysInMonth = 31
 case 2
 if pn<>0 then
 DaysInMonth = 28
 else
 DaysInMonth = 29
 end if
 case 4,6,9,11
 DaysInMonth = 30
 end select
 exit function
 end if
end if
DaysInMonth = 30
end function
</script>
 请输入时间: 
          <input type="text" name="SYear" maxlength="4" size="4"  onchange="SYearchange(searthbydt)" onBlur="SYearblur(searthbydt);">
          年 
          <input type="text" name="SMonth" maxlength="2" size="2" onchange="SMonthchange(searthbydt)" onFocus="SMonthfocus(searthbydt);" onBlur="SMonthblur(searthbydt);">
          月 
          <input type="text" name="SDay" maxlength="2" size="2" onFocus="SDayfocus(searthbydt); " onBlur="SDayblur(searthbydt);">
          日

解决方案 »

  1.   

    前面错了,再贴一次
    <script language="VBScript">
    function SYearblur(frmname)
    BSYear = frmname.SYear.value
    if (not isNumeric(BSYear)) and BSYear <> ""then
    msgbox "请输入正确年份!"
    frmname.SYear.value = ""
    frmname.SYear.focus
    exit function
    elseif BSYear = "" then
    exit function
    end if
    BSYear = cint(BSYear)
    if BSYear < 2000 then
    msgbox "现在都已经2001年啦!"
    frmname.SYear.value = ""
    frmname.SYear.focus
    exit function
    end if
    if BSYear > 2100 then
    msgbox "现在已经23世纪啦?这个版本已经不能用了,你再编一个新版本的吧!"
    frmname.SYear.value = ""
    frmname.SYear.focus
    end if
    end functionfunction SMonthfocus(frmname)
    if frmname.SYear.value = "" then
    frmname.SYear.focus
    end if
    end function
    function SMonthblur(frmname)
    BSMonth = frmname.SMonth.value
    if (not isNumeric(BSMonth)) or BSMonth = "" then
    frmname.SMonth.value = ""
    exit function
    end if
    BSMonth = cint(BSMonth)
    if BSMonth < 1 then
    frmname.SMonth.value = ""
    exit function
    end if
    if BSMonth > 12 then
    frmname.SMonth.value = ""
    exit function
    end if
    frmname.SMonth.value = BSMonth
    end functionfunction SYearchange(frmname)
    frmname.SDay.value = ""
    end functionfunction SMonthchange(frmname)
    frmname.SDay.value = ""
    end functionfunction SDayfocus(frmname)
    if frmname.SMonth.value="" then 
    frmname.SMonth.focus
    end if
    end functionfunction SDayblur(frmname)
    d = frmname.SDay.value
    if (not isNumeric(d)) or d = "" then
      frmname.SDay.value = ""
      exit function
    end if
    d = cint(d)
    m = frmname.SMonth.value
    y = frmname.SYear.valueMaxD = DaysInMonth(m,y)
    if d < 1 or d > MaxD then
    frmname.SDay.value = ""
    exit function
    end if
    frmname.SDay.value = d
    end functionfunction DaysInMonth(m,y)
    if isNumeric(m) and m <> "" and isNumeric(y) and y <> "" then
    m = cint(m)
    y = cint(y)if m>0 and m<13 and y>1999 and y<2101 then
    pn = y mod 4
    select case m
    case 1,3,5,7,8,10,12
    DaysInMonth = 31
    case 2
    if pn<>0 then
    DaysInMonth = 28
    else
    DaysInMonth = 29
    end if
    case 4,6,9,11
    DaysInMonth = 30
    end select
    exit function
    end if
    end if
    DaysInMonth = 30
    end function
    </script>
    <form name=searthbydt>
    请输入时间: 
    <input type="text" name="SYear" maxlength="4" size="4"  onchange="SYearchange(searthbydt)" onBlur="SYearblur(searthbydt)">年
    <input type="text" name="SMonth" maxlength="2" size="2" onchange="SMonthchange(searthbydt)" onFocus="SMonthfocus(searthbydt)" onBlur="SMonthblur(searthbydt)">月
    <input type="text" name="SDay" maxlength="2" size="2" onFocus="SDayfocus(searthbydt)" onBlur="SDayblur(searthbydt)">日
    </form>