日期:2014-05-16  浏览次数:20420 次

急,动态表单问题高手进.......
要达到的效果是当选择会员类型与生效时间时,能自动算出过期时间。
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();} ">