日期:2014-05-18  浏览次数:20811 次

关于在JSP中嵌套javascript的问题
我在写JSP代码中要嵌入两个用javasript写的日期控件,单独的执行这个javasript写的代码可以生成三个下拉列表的日期框,但是放在JSP中的一个表格后,下拉列表就不能实现了,下面是代码,大家可以试试。
<%@page   pageEncoding= "GBK "   contentType= "text/html;   charset=GBK "   %>
<html>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=GBK "/>
<title> sdsdfsdf </title>
</head>
<body>
<form   name=form1>
<select   name=YYYY   onchange= "YYYYDD(this.value) ">
<option   value= " "> 请选择   年 </option>
</select>
<select   name=MM   onchange= "MMDD(this.value) ">
<option   value= " "> 选择   月 </option>
</select>
<select   name=DD>
<option   value= " "> 选择   日 </option>
</select>
</form>

<script   language= "JavaScript ">
function   YYYYMMDDstart()
{
MonHead   =   [31,   28,   31,   30,   31,   30,   31,   31,   30,   31,   30,   31];

//先给年下拉框赋内容
var   y   =   new   Date().getFullYear();
for   (var   i   =   (y-30);   i   <   (y+30);   i++)   //以今年为准,前30年,后30年
document.form1.YYYY.options.add(new   Option( "   "+   i   + "   年 ",   i));

//赋月份的下拉框
for   (var   i   =   1;   i   <   13;   i++)
document.form1.MM.options.add(new   Option( "   "   +   i   +   "   月 ",   i));

document.form1.YYYY.value   =   y;
document.form1.MM.value   =   new   Date().getMonth()   +   1;
var   n   =   MonHead[new   Date().getMonth()];
if   (new   Date().getMonth()   ==1   &&   IsPinYear(YYYYvalue))   n++;
writeDay(n);   //赋日期下拉框Author:meizz
document.form1.DD.value   =   new   Date().getDate();
}
if(document.attachEvent)
window.attachEvent( "onload ",   YYYYMMDDstart);
else
window.addEventListener( 'load ',   YYYYMMDDstart,   false);
function   YYYYDD(str)   //年发生变化时日期发生变化(主要是判断闰平年)
{
var   MMvalue   =   document.form1.MM.options[document.form1.MM.selectedIndex].value;
if   (MMvalue   ==   " "){   var   e   =   document.form1.DD;   optionsClear(e);   return;}
var   n   =   MonHead[MMvalue   -   1];
if   (MMvalue   ==2   &&   IsPinYear(str))   n++;
writeDay(n)
}
function   MMDD(str)   //月发生变化时日期联动
{
var   YYYYvalue   =   document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
if   (YYYYvalue   ==   " "){   var   e   =   document.form1.DD;   optionsClear(e);   return;}
var   n   =   MonHead[str   -   1];
if   (str   ==2   &&   IsPinYear(YYYYvalue))   n++;
writeDay(n)
}
function   writeDay(n)   //据条件写日期的下拉框
{
var   e   =   document.form1.DD;   optionsClear(e);
for   (var   i=1;   i <(n+1);   i++)
e.options.add(new