急,动态表单问题高手进.......
要达到的效果是当选择会员类型与生效时间时,能自动算出过期时间。
javascript脚本如下:
function ChkQuitTime()
{ var membertype,starttime,quittime,i,str,y,m,d;
//membertype是会员类型,starttime是生效时间,quittime过期时间,y为年,m位月,d为日,其中form1为表单名
membertype=document.form1.membertype.options[form1.membertype.selectedIndex].value;
starttime=document.form1.starttime.value;
if(membertype== " ")
{membertype=document.form1.membertype.options[0].value;}
if(membertype== "三月制 ")
i=3;
else
if(membertype== "半年制 ")
i=6;
else
i=12;
if(starttime!= " ")
{
str=starttime.split( "- ");
y=str[0];
m=str[1]-1;
d=str[2];
quittime=new Date(y,m,d);
quittime.setMonth(quittime.getMonth()+i);
document.form1.quittime.value=quittime.getYear()+ "- "+(quittime.getMonth()+1)+ "- "+quittime.getDate();
}
}
<label> 会员类型:
<select name= "membertype " id= "membertype " onchange= "ChkQuitTime() ">
<option value= "三月制 " selected> 三月制 </option>
<option value= "半年制 "> 半年制 </option>
<option value= "一年制 "> 一年制 </option>
</select>
</label>
<label> 生效时间:
<input name= "starttime " type= "text " id= "starttime " onChange= "ChkQuitTime() " >
</label>
<label> 过期日期:
<input name= "quittime " type= "text " id= "quittime ">
</label>
现在基本可以达到效果,可是只有当生效时间文本框的值改变之后才会达到。也就是说输入时间之后根本没回应,你必须改变值并使starttime失去焦点后才会有效果。我想要的目的是当生效时间文本框中输入了值,只要他一失去焦点就结合类型计算过期时间。另外生效时间也不是手动收入,而是通过点击他旁边的图片触发脚本函数显示,可是当选了一个时间后换为另一个根本不算是starttime的值改变。旁边的图片代码如下:
<img src= "Images/calendar.gif " alt= "选择日期 " width= "16 " height= "15 " vspace= "5 " border= "0 " onClick= "fShowCalendar(this.form.starttime) ">
------解决方案--------------------用onfocusout()时间处理
------解决方案-------------------- <img src= "Images/calendar.gif " alt= "选择日期 " width= "16 " height= "15 " vspace= "5 " border= "0 " onClick= "fShowCalendar(this.form.starttime) ">
========>
<img src= "Images/calendar.gif " alt= "选择日期 " width= "16 " height= "15 " vspace= "5 " border= "0 " onClick= "javascript:fShowCalendar(this.form.starttime);if(this.form.starttime.value!= ' '){ChkQuitTime();} ">