My97DatePicker 限制结束日期和开始日期在同一年内

茶暖人凉 2016-06-14 03:24:22
有两个日期选择框,开始时间 和结束时间。想要实现 开始时间选择 2016-06-14,结束时间最多只能选择到 2016-12-31
或者开始时间选择在2015年,则结束日期 最多只能选择到2015-12-31,以此类推,开始时间和结束时间始终保持在同一年内,请问各位大神该如何实现?
...全文
774 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
喜水禾 2017-06-13
  • 打赏
  • 举报
回复
#F{new Date($dp.$(\'txtStart\').val).getYear()\+\'-12-31\这个是可行的
lshfong 2016-08-17
  • 打赏
  • 举报
回复
var dt = new Date(1990,1,1);
dt = new Date(dt.getYear(),11,31);
console.info(dt)
sand_911008 2016-08-17
  • 打赏
  • 举报
回复
<tr> <td><span>*</span>开始时间:</td> <td><input type="text" name="kbsq.nkbsj" id="begin" class="Wdate" readonly="readonly" value="<fmt:formatDate value="${saveKbsq.nkbsj }" pattern="yyyy-MM-dd"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'%y-01-01',maxDate:'#F{$dp.$D(\'end\')||\'%y-12-31\'}'})" style="width:140px"/></td> <td><span>*</span>结束时间:</td> <td><input type="text" name="kbsq.jssj" id="end" class="Wdate" readonly="readonly" value="<fmt:formatDate value="${saveKbsq.jssj }" pattern="yyyy-MM-dd"/>" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',startDate:'%y-%M-%d',minDate:'#F{$dp.$D(\'begin\')||\'%y-01-01\'}',maxDate:'%y-12-31'})" style="width:140px"/></td> </tr>
茶暖人凉 2016-06-15
  • 打赏
  • 举报
回复
引用 11 楼 moyanruo 的回复:
做出来了 定义一个公共变量,本来不想这样的,不过实在写不出来了。 各位大神,谁要是有更好的方法提供下呗!

<script type="text/javascript" language="javascript" src="/js/My97DatePicker/WdatePicker.js"></script>
    <script type="text/javascript">
        var maxYear = "";
    </script>

开始日期:<asp:TextBox ID="txtStart" runat="server" class="Wdate" onClick="WdatePicker({onpicking:function(){maxYear=$dp.cal.date.y;}})"></asp:TextBox>
       
结束日期:<asp:TextBox ID="txtEnd" runat="server" class="Wdate" onFocus="WdatePicker({ dateFmt: 'yyyy-MM-dd',minDate:'#F{$dp.$D(\'txtStart\')}',maxDate:maxYear+'-12-31'})"></asp:TextBox>
结束日期,代码写错了,最后的引号有问题。

开始日期:<asp:TextBox ID="txtStart" runat="server" class="Wdate" onClick="WdatePicker({onpicking:function(){maxYear=$dp.cal.date.y;}})"></asp:TextBox>
       
结束日期:<asp:TextBox ID="txtEnd" runat="server" class="Wdate" onFocus="WdatePicker({ dateFmt: 'yyyy-MM-dd',minDate:'#F{$dp.$D(\'txtStart\')}',maxDate:maxYear+'-12-31'})"></asp:TextBox>
茶暖人凉 2016-06-14
  • 打赏
  • 举报
回复
做出来了 定义一个公共变量,本来不想这样的,不过实在写不出来了。 各位大神,谁要是有更好的方法提供下呗!

<script type="text/javascript" language="javascript" src="/js/My97DatePicker/WdatePicker.js"></script>
    <script type="text/javascript">
        var maxYear = "";
    </script>

开始日期:<asp:TextBox ID="txtStart" runat="server" class="Wdate" onClick="WdatePicker({onpicking:function(){maxYear=$dp.cal.date.y;}})"></asp:TextBox>
       
结束日期:<asp:TextBox ID="txtEnd" runat="server" class="Wdate" onFocus="WdatePicker({ dateFmt: 'yyyy-MM-dd',minDate:'#F{$dp.$D(\'txtStart\')}',maxDate:maxYear+'-12-31\'}'})"></asp:TextBox>
茶暖人凉 2016-06-14
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
'#F{new Date($dp.$(\'txtStart\').val).getYear()\+\'-12-31\'}' 这段怎么看都是文本啊 onfocus是事件,里面是js,所以你这段应该写在WdatePicker外面,用个局部变量 如果写在里面,应该是下面这种,当然下面直接忽略日期这块,直接用字符串操作
maxDate:$('#txtStart').val()==''?'':$('#txtStart').val().substr(0,4)+'-12-31'
<asp:TextBox ID="txtEnd" runat="server" class="Wdate" onFocus="WdatePicker({ dateFmt: 'yyyy-MM-dd', maxDate: $('#txtStart').val() == '' ? '' : $('#txtStart').val().substr(0, 4) + '-12-31' })"></asp:TextBox>
这样写是不行的,日期选择都弹出不来了,并且这样 $('#txtStart').val() ,好像是取不到值的, '#F{new Date($dp.$(\'txtStart\').val).getYear()\+\'-12-31\'}' 这是参考官网文档写的。
  • 打赏
  • 举报
回复
'#F{new Date($dp.$(\'txtStart\').val).getYear()\+\'-12-31\'}'
这段怎么看都是文本啊
onfocus是事件,里面是js,所以你这段应该写在WdatePicker外面,用个局部变量
如果写在里面,应该是下面这种,当然下面直接忽略日期这块,直接用字符串操作
maxDate:$('#txtStart').val()==''?'':$('#txtStart').val().substr(0,4)+'-12-31'
茶暖人凉 2016-06-14
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
前一个日期就是$('#startDate').val()啊,然后转换成日期,或者字符串截取年部分 这时候同理,你要根据结束时间,来给开始时间赋year+"-01-01"这样的minDate
我是这样获取前一个控件的年份的:new Date($dp.$(\'txtStart\').val).getYear(),但是获取不到。
<asp:TextBox ID="TextBox4" runat="server" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{new Date($dp.$(\'txtStart\').val).getYear()\+\'-12-31\'}'})}"></asp:TextBox>
  • 打赏
  • 举报
回复
前一个日期就是$('#startDate').val()啊,然后转换成日期,或者字符串截取年部分 这时候同理,你要根据结束时间,来给开始时间赋year+"-01-01"这样的minDate
  • 打赏
  • 举报
回复
引用 4 楼 moyanruo 的回复:
[quote=引用 1 楼 starfd 的回复:] 这个就是你初始化的时候的问题啊…… 你如果js做不到年月日的判断,那通过后端返回startdate和enddate应该可以做到吧…… 然后你的日期传入参数就用这两个date就行
有点不太理解后端怎么返回startdate和enddate,我选择startdate之后并没有调用后端的方法啊,难道这里选择日期之后要调用后端的一个方法,返回一个值,然后根据这个值限制 enddate的MaxDate?[/quote] 这楼答案忽略,因为你是要选择了开始时间后控制后面的,所以都是js的事情,不用管后端,2L给你怎么通过开始时间获取当年最后一天的写法了,而你实际甚至用不到转成日期,你只要用你日期的分隔符获取Year部分,然后Year+"12-31"赋给你的EndDate得maxDate就可以了
茶暖人凉 2016-06-14
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
然后两个时间互动可以参考 http://blog.csdn.net/ouou009/article/details/7690739
我通过 这个方法 $.cal.date.M 可以获取当前控件选择日期的年、月、日,但是我不知道怎么在当前控件的选择事件中获取前一个控件选择的日期……
茶暖人凉 2016-06-14
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
这个就是你初始化的时候的问题啊…… 你如果js做不到年月日的判断,那通过后端返回startdate和enddate应该可以做到吧…… 然后你的日期传入参数就用这两个date就行
有点不太理解后端怎么返回startdate和enddate,我选择startdate之后并没有调用后端的方法啊,难道这里选择日期之后要调用后端的一个方法,返回一个值,然后根据这个值限制 enddate的MaxDate?
  • 打赏
  • 举报
回复
然后两个时间互动可以参考 http://blog.csdn.net/ouou009/article/details/7690739
  • 打赏
  • 举报
回复
js获取当年最后一天的代码
var dt = new Date(1990,1,1);
dt = new Date(dt.getYear(),11,31);
console.info(dt)
  • 打赏
  • 举报
回复
这个就是你初始化的时候的问题啊…… 你如果js做不到年月日的判断,那通过后端返回startdate和enddate应该可以做到吧…… 然后你的日期传入参数就用这两个date就行

110,475

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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