在两个文本框中输入日期数据后,第三个文本框能够自动计算出两个日期之间的天数
前台代码如下:
<tr>
<td class="style1">合同开工日期:</td>
<td class="style3" >
<asp:TextBox ID="htkgrq" runat="server" AutoPostBack="True" ontextchanged="htkgrq_TextChanged"></asp:TextBox></td>
<td class="style2">合同竣工日期:</td>
<td class="style4">
<asp:TextBox ID="htjgrq" runat="server" AutoPostBack="True" ontextchanged="htjgrq_TextChanged"></asp:TextBox></td>
</tr>
<tr>
<td class="style1">合同工期(天):</td>
<td class="style3" >
<asp:TextBox ID="htgq" runat="server" Width="280px"></asp:TextBox>
</tr>
后台具体代码如下:
protected void htjgrq_TextChanged(object sender, EventArgs e)
{//结束日期文本框
if (htkgrq.Text != "")
{
if (htkgrq.Text != "")
{
DateTime time_htkgrq = Convert.ToDateTime(htkgrq.Text);
DateTime time_htjgrq = Convert.ToDateTime(htjgrq.Text);
if (time_htjgrq >= time_htkgrq)
{
//计算出时间差值
string str = ((TimeSpan)(time_htjgrq - time_htkgrq)).TotalDays.ToString();
htgq.Text = str;//赋给第三个文本框
}
else
{
Response.Write("<script language='javascript'>alert('合同竣工日期早于合同开工日期,请正确输入日期!');</script>");
htjgrq.Focus();
}
}
}
}
protected void htkgrq_TextChanged(object sender, EventArgs e)
{//开始日期文本框
if (htjgrq.Text != "")
{
this.htjgrq_TextChanged(sender, e);//调用结束日期文本框事件
}
}
其中前台代码中的红色字体是关键,尤其是AutoPostBack="True"属性是必须设置的,否则textchanged的事件是无法自动实现的