请教:三个文本框,一、二选择时间,自动计算时间间隔填充第三个文本框

tt2153 2016-03-10 09:06:39
<p>
开始时间:<asp:TextBox ID="TextBox1" runat="server" onclick="SelectDate(this)"></asp:TextBox>
</p>
<p>
结束时间:<asp:TextBox ID="TextBox2" runat="server" onclick="SelectDate(this)"></asp:TextBox>
</p>
<p>
间隔天数:<asp:TextBox ID="TextBox3" runat="server" onclick ="dt(TextBox1.text,TextBox1.text)" ></asp:TextBox>
</p>

直接在1、2文本框输入时间,可以实现自动计算时间间隔。但通过选择就不能自动计算,求写法。
...全文
558 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2153 2016-04-18
  • 打赏
  • 举报
回复
引用 13 楼 liudabao123 的回复:
JS代码 任意一个文本框发生变化都触发时间
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>日期差计算器</title>
</head>

<body>
<script>
var hzWeek= new Array("日","一","二","三","四","五","六","日");function cweekday(wday){return hzWeek[wday];}

function cala()
{
y=document.getElementById("SY").value;
m=document.getElementById("SM").value;
d=document.getElementById("SD").value;
ddd=document.getElementById("decday").value;

ttt=new Date(y,m-1,d).getTime()+ddd*24000*3600;

theday=new Date();
theday.setTime(ttt);

document.getElementById("result1").innerHTML=theday.getFullYear()+"年"+(1+theday.getMonth())+"月"+theday.getDate()+"日"+"星期"+cweekday(theday.getDay());
}

function calb()
{
y2=document.getElementById("SY2").value;
m2=document.getElementById("SM2").value;
d2=document.getElementById("SD2").value;


y3=document.getElementById("SY3").value;
m3=document.getElementById("SM3").value;
d3=document.getElementById("SD3").value;


day2=new Date(y2,m2-1,d2);
day3=new Date(y3,m3-1,d3);

document.getElementById("result2").innerHTML=(day3-day2)/86400000+"天";
}

</script>

<b>根据相差天数计算日期:</b>
<br>
距离:
<input size=8 id=SY value=2015>年
<input size=4 id=SM value=11>月
<input size=4 id=SD value=8>日
<b style="color:red;">(缺省为今天)</b>
<br>相差:
<input size=8 id=decday value=100>天
<b style="color:red;">(输入负数则往前计算)</b>
<br />日期是:
<b><span id=result1> </span></b>
<br>
<input type=button value="计算" onclick="cala()">
<br><br><br>
<b>根据日期计算相差天数:</b>
<br>
开始日期:
<input size=8 id=SY2 value=2015>年
<input size=4 id=SM2 value=11>月
<input size=4 id=SD2 value=8>日
<br>结束日期:
<input size=8 id=SY3  value=2016 >年
<input size=4 id=SM3 value=1>月
<input size=4 id=SD3 value=1>日
<br />相差天数:
<b><span id=result2> </span></b>
<br>
<input type=button value="计算" onclick="calb()">
<br>
<br>
</bodY>
</html>
我的意思是:不要<input type=button value="计算" onclick="calb()">计算按钮,       直接通过时间控件选择时间到文本框后,自动得出间隔天数。      (不使用按钮,通过文本框的改变来实现)
小堇 2016-04-11
  • 打赏
  • 举报
回复
JS代码 任意一个文本框发生变化都触发时间
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>日期差计算器</title>
</head>

<body>
<script>
var hzWeek= new Array("日","一","二","三","四","五","六","日");function cweekday(wday){return hzWeek[wday];}

function cala()
{
y=document.getElementById("SY").value;
m=document.getElementById("SM").value;
d=document.getElementById("SD").value;
ddd=document.getElementById("decday").value;

ttt=new Date(y,m-1,d).getTime()+ddd*24000*3600;

theday=new Date();
theday.setTime(ttt);

document.getElementById("result1").innerHTML=theday.getFullYear()+"年"+(1+theday.getMonth())+"月"+theday.getDate()+"日"+"星期"+cweekday(theday.getDay());
}

function calb()
{
y2=document.getElementById("SY2").value;
m2=document.getElementById("SM2").value;
d2=document.getElementById("SD2").value;


y3=document.getElementById("SY3").value;
m3=document.getElementById("SM3").value;
d3=document.getElementById("SD3").value;


day2=new Date(y2,m2-1,d2);
day3=new Date(y3,m3-1,d3);

document.getElementById("result2").innerHTML=(day3-day2)/86400000+"天";
}

</script>

<b>根据相差天数计算日期:</b>
<br>
距离:
<input size=8 id=SY value=2015>年
<input size=4 id=SM value=11>月
<input size=4 id=SD value=8>日
<b style="color:red;">(缺省为今天)</b>
<br>相差:
<input size=8 id=decday value=100>天
<b style="color:red;">(输入负数则往前计算)</b>
<br />日期是:
<b><span id=result1> </span></b>
<br>
<input type=button value="计算" onclick="cala()">
<br><br><br>
<b>根据日期计算相差天数:</b>
<br>
开始日期:
<input size=8 id=SY2 value=2015>年
<input size=4 id=SM2 value=11>月
<input size=4 id=SD2 value=8>日
<br>结束日期:
<input size=8 id=SY3  value=2016 >年
<input size=4 id=SM3 value=1>月
<input size=4 id=SD3 value=1>日
<br />相差天数:
<b><span id=result2> </span></b>
<br>
<input type=button value="计算" onclick="calb()">
<br>
<br>
</bodY>
</html>
tt2153 2016-04-11
  • 打赏
  • 举报
回复
引用 9 楼 xiaojie_cp 的回复:
客户端就能完成的事情,非要跑到服务器端处理。
你说的方法,我用JS也做了, <p>开始时间:<input id="Txtad5" type="text" /></p> <p>结束时间:<input id="Txtad6" type="text" onclick="SelectDate(this)"/></p> <p> 间隔天数:<input id="Txtad7" type="text" onclick ="dt(Txtad5,Txtad6)" /></p> 直接输入时期还可以,但加入onclick="SelectDate(this)" 时期选择控件就不自动计算了
tt2153 2016-04-11
  • 打赏
  • 举报
回复
引用 10 楼 lizhi3186575 的回复:
在文本框二定义textChanged事件,然后在后台判断文本框1和2的值是否为空,都不空的情况下,通过JS或C#代码来获取时间间隔
你说的这个方法我已经实现,直接输入日期是可以,但通过日期控件选择日期就不行了。
人生导师 2016-03-29
  • 打赏
  • 举报
回复
在文本框二定义textChanged事件,然后在后台判断文本框1和2的值是否为空,都不空的情况下,通过JS或C#代码来获取时间间隔
lovebaby 2016-03-26
  • 打赏
  • 举报
回复
客户端就能完成的事情,非要跑到服务器端处理。
tt2153 2016-03-24
  • 打赏
  • 举报
回复
insus 2016-03-14
  • 打赏
  • 举报
回复
yaotomo 2016-03-12
  • 打赏
  • 举报
回复
我一般用jQuery插件选日期,选择后通过jQuery获取两个文本框的值并得到间隔
tt2153 2016-03-12
  • 打赏
  • 举报
回复
小涂:通过<input type="button" value="计算" onclick="calc()" /> 按钮的方式我已经实现了自动计算,通过在文本框输入日期我也实现了自动计算,但通过onclick="SelectDate(this)"控件选择日期到文本框,就不能自动计算了。请高手赐教。
小涂 2016-03-11
  • 打赏
  • 举报
回复
这种操作,建议用JS实现,试过JS吗?
小涂 2016-03-11
  • 打赏
  • 举报
回复
<input id="t1" type="text" onpropertychange="formatT()" onblur="fT()" />
<input id="t2" type="text" onpropertychange="formatT()" onblur="fT()" />
<input type="button" value="计算" onclick="calc()" />
<br />
<a id="rslt"></a>
<script>
function calc()
{
try
{
var a1 = t1.value;
var a2 = t2.value;
var b1 = parseInt(a1.split(":")[0],10)*60+parseInt(a1.split(":")[1],10);
var b2 = parseInt(a2.split(":")[0],10)*60+parseInt(a2.split(":")[1],10);
rslt.innerHTML = Math.abs(parseInt((b1-b2)/60,10)) + " : " + Math.abs((b1-b2)%60);
}
catch(e){}
}
function formatT()
{
var tbox = event.srcElement;
if(tbox.value != "")
{
if(tbox.value.length==1)
{
var tmp = parseInt(tbox.value,10);
if(!isNaN(tmp))
{
if(tmp>2)
{
tbox.value = "0" + tbox.value + ":";
}
}
}
else if(tbox.value.length==2)
{
var tmp = parseInt(tbox.value,10);
if(!isNaN(tmp))
{
if(tmp>24)
{
tbox.value = "02:" + tbox.value.substring(1,2)
}
else
{
tbox.value += ":";
}
}
}
var hhss = tbox.value.split(':');
if(hhss.length>1)
{
if(hhss[1].length==1 && hhss[1]>"5")
{
tbox.value = hhss[0] + ":0" + hhss[1];
}
}
}
}
function fT()
{
var tbox = event.srcElement;
if(tbox.value!="")
{
var hhss = tbox.value.split(':');
if(hhss[1].length==1)
{
tbox.value = hhss[0] + ":0" + hhss[1];
}
}
}
</script>
tt2153 2016-03-11
  • 打赏
  • 举报
回复
引用 1 楼 acute2000 的回复:
 protected void Page_Load(object sender, EventArgs e)
    {
          DateTime datetime1 = DateTime.Parse(this.TextBox1.Text);
        DateTime datetime2 = DateTime.Parse(this.TextBox2.Text);
        TimeSpan timespan = datetime2 - datetime1;
        this.TextBox3.Text = timespan.ToString();
    }
<p> <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" onclick="SelectDate(this)" ontextchanged="TextBox1_TextChanged"></asp:TextBox> </p> <p> <asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" onclick="SelectDate(this)" ontextchanged="TextBox2_TextChanged"></asp:TextBox> </p> <p> <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> </p> 后台实现选择时间后,自动计算,但用_TextChanged无法实现,求解。 protected void TextBox2_TextChanged(object sender, EventArgs e) { if (TextBox1.Text == "" || TextBox2.Text == "") return; DateTime datetime1 = DateTime.Parse(this.TextBox1.Text); DateTime datetime2 = DateTime.Parse(this.TextBox2.Text); TimeSpan timespan = datetime2 - datetime1; this.TextBox3.Text = timespan.ToString(); } protected void TextBox1_TextChanged(object sender, EventArgs e) { if (TextBox1.Text == "" || TextBox2.Text == "") return; DateTime datetime1 = DateTime.Parse(this.TextBox1.Text); DateTime datetime2 = DateTime.Parse(this.TextBox2.Text); TimeSpan timespan = datetime2 - datetime1; this.TextBox3.Text = timespan.ToString(); }
天祈笨笨 2016-03-10
  • 打赏
  • 举报
回复
 protected void Page_Load(object sender, EventArgs e)
    {
          DateTime datetime1 = DateTime.Parse(this.TextBox1.Text);
        DateTime datetime2 = DateTime.Parse(this.TextBox2.Text);
        TimeSpan timespan = datetime2 - datetime1;
        this.TextBox3.Text = timespan.ToString();
    }

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧