最近在使用My97日期控件的时候,遇到了这样一个问题:需要在选择一个日期之后,在另一个日期框中自动显示添加15天之后的日期。
本来希望在文本框的OnTextChanged事件中进行后台代码的编写,但是调试时发现没有触发这个事件,查看大神们讨论的原因是
:TextBox在处于焦点状态后改变其内容在失去焦点才调用,对于日历文本框的情况分析发现点击文本框(或取得焦点),弹出日历并选择
日期,这时焦点移出文本框,且文本框的内容为发生变化(通过JS变化)。
于是,查阅MY官方资料,在自定义事件中找到了解决办法:在onpicked事件中调用js,实现上面我们讲到的效果。
以下就是主要的html,仅供参考哈。
<script src="../My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function DefaultDate() {
var date = this.value;
var dateTemp = date.split("/");
var nDate = new Date(dateTemp[0] + '/' + dateTemp[1] + '/' + dateTemp[2]); //月日年
var millSeconds = Math.abs(nDate) + (15 * 24 * 60 * 60 * 1000);//15
var rDate = new Date(millSeconds);
var year = rDate.getFullYear();
var month = rDate.getMonth() + 1;
if (month < 10) month = "0" + month;
var date = rDate.getDate();
if (date < 10) date = "0" + date;
$dp.$('MainContent_2_TextBox2').value = month + '/' + date + '/' + year;//母版页中textbox2的id有所区别
}
</script>
<asp:TextBox runat="server" class="Wdate" ID="TextBox1" onFocus="WdatePicker({onpicked:DefaultDate})" Width="50px"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" class="Wdate" onFocus="WdatePicker()" Width="50px"></asp:TextBox>
如果只是要将文本框1的日期赋值到文本框2,只要以下的写法就可以了:
<asp:TextBox runat="server" class="Wdate" ID="TextBox1" onFocus="WdatePicker({onpicked:function() {$dp.$('MainContent_2_TextBox2').value=this.value;}})" Width="50px"></asp:TextBox>
或者这样也可以:
<asp:TextBox runat="server" class="Wdate" ID="TextBox1" onFocus="WdatePicker({onpicked:function() {$dp.$('MainContent_2_TextBox2').value=$dp.cal.getP('M') + '/' + $dp.cal.getP('d') + '/' + $dp.cal.getP('y');}})" Width="50px"></asp:TextBox>
花了一天的时间,菜鸟的生活狠艰苦哈,希望对和我一样的童鞋有所帮助。
参考的资料链接:
http://www.cnblogs.com/cs_net/archive/2011/08/26/2154502.html
http://www.my97.net/dp/demo/index.htm
http://blog.csdn.net/zhengqiqiqinqin/article/details/12713683